# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 17 def initialize(config) Jekyll::External.require_with_graceful_fail "kramdown" @main_fallback_highlighter = config["highlighter"] || "rouge" @config = config["kramdown"] || {} @highlighter = nil setup end
# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 40 def convert(content) Kramdown::Document.new(content, @config).to_html end
Setup and normalize the configuration:
* Create Kramdown if it doesn't exist. * Set syntax_highlighter, detecting enable_coderay and merging highlighter if none. * Merge kramdown[coderay] into syntax_highlighter_opts stripping coderay_. * Make sure `syntax_highlighter_opts` exists.
# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 32 def setup @config["syntax_highlighter"] ||= highlighter @config["syntax_highlighter_opts"] ||= {} @config["coderay"] ||= {} # XXX: Legacy. modernize_coderay_config make_accessible end
config[syntax_higlighter] >
config[kramdown][enable_coderay] > config[highlighter]
Where `enable_coderay` is now deprecated because Kramdown supports Rouge now too.
# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 63 def highlighter return @highlighter if @highlighter if @config["syntax_highlighter"] return @highlighter = @config[ "syntax_highlighter" ] end @highlighter = begin if @config.key?("enable_coderay") && @config["enable_coderay"] Jekyll::Deprecator.deprecation_message( "You are using 'enable_coderay', " "use syntax_highlighter: coderay in your configuration file." ) "coderay" else @main_fallback_highlighter end end end
# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 45 def make_accessible(hash = @config) proc_ = proc { |hash_, key| hash_[key.to_s] if key.is_a?(Symbol) } hash.default_proc = proc_ hash.each do |_, val| make_accessible val if val.is_a?( Hash ) end end
If our highlighter is CodeRay we go in to merge the CodeRay defaults with your “coderay” key if it's there, deprecating it in the process of you using it.
# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 106 def modernize_coderay_config if highlighter == "coderay" Jekyll::Deprecator.deprecation_message( "You are using 'kramdown.coderay' in your configuration, " "please use 'syntax_highlighter_opts' instead." ) @config["syntax_highlighter_opts"] = begin strip_coderay_prefix( @config["syntax_highlighter_opts"] .merge(CODERAY_DEFAULTS) .merge(@config["coderay"]) ) end end end
# File lib/jekyll/converters/markdown/kramdown_parser.rb, line 87 def strip_coderay_prefix(hash) hash.each_with_object({}) do |(key, val), hsh| cleaned_key = key.gsub(%r\Acoderay_!, "") if key != cleaned_key Jekyll::Deprecator.deprecation_message( "You are using '#{key}'. Normalizing to #{cleaned_key}." ) end hsh[cleaned_key] = val end end