blob: 5fa8f144191917224a7b822c144df78174453ef3 [file] [log] [blame]
# -*- coding: utf-8 -*-
#
#--
# Copyright (C) 2009-2016 Thomas Leitner <t_leitner@gmx.at>
#
# This file is part of kramdown which is licensed under the MIT.
#++
#
require 'kramdown/utils'
module Kramdown
# This module contains all available converters, i.e. classes that take a root Element and convert
# it to a specific output format. The result is normally a string. For example, the
# Converter::Html module converts an element tree into valid HTML.
#
# Converters use the Base class for common functionality (like applying a template to the output)
# \- see its API documentation for how to create a custom converter class.
module Converter
autoload :Base, 'kramdown/converter/base'
autoload :Html, 'kramdown/converter/html'
autoload :Latex, 'kramdown/converter/latex'
autoload :Kramdown, 'kramdown/converter/kramdown'
autoload :Toc, 'kramdown/converter/toc'
autoload :RemoveHtmlTags, 'kramdown/converter/remove_html_tags'
autoload :Pdf, 'kramdown/converter/pdf'
autoload :HashAST, 'kramdown/converter/hash_ast'
autoload :HashAst, 'kramdown/converter/hash_ast'
autoload :Man, 'kramdown/converter/man'
extend ::Kramdown::Utils::Configurable
configurable(:syntax_highlighter)
['Minted', "Coderay", "Rouge"].each do |klass_name|
kn_down = klass_name.downcase.intern
add_syntax_highlighter(kn_down) do |converter, text, lang, type, opts|
require "kramdown/converter/syntax_highlighter/#{kn_down}"
klass = ::Kramdown::Utils.deep_const_get("::Kramdown::Converter::SyntaxHighlighter::#{klass_name}")
if !klass.const_defined?(:AVAILABLE) || klass::AVAILABLE
add_syntax_highlighter(kn_down, klass)
else
add_syntax_highlighter(kn_down) {|*args| nil}
end
syntax_highlighter(kn_down).call(converter, text, lang, type, opts)
end
end
configurable(:math_engine)
['Mathjax', "MathjaxNode", "Ritex", "Itex2MML"].each do |klass_name|
kn_down = klass_name.downcase.intern
add_math_engine(kn_down) do |converter, el, opts|
require "kramdown/converter/math_engine/#{kn_down}"
klass = ::Kramdown::Utils.deep_const_get("::Kramdown::Converter::MathEngine::#{klass_name}")
if !klass.const_defined?(:AVAILABLE) || klass::AVAILABLE
add_math_engine(kn_down, klass)
else
add_math_engine(kn_down) {|*args| nil}
end
math_engine(kn_down).call(converter, el, opts)
end
end
end
end