diff --git a/lib/jekyll/converters/markdown/kramdown_parser.rb b/lib/jekyll/converters/markdown/kramdown_parser.rb index 05b94337..d9c9c222 100644 --- a/lib/jekyll/converters/markdown/kramdown_parser.rb +++ b/lib/jekyll/converters/markdown/kramdown_parser.rb @@ -12,7 +12,7 @@ module Jekyll "line_number_start" => 1, "tab_width" => 4, "wrap" => "div" - } + }.freeze def initialize(config) Jekyll::External.require_with_graceful_fail "kramdown" @@ -32,22 +32,44 @@ module Jekyll @config["syntax_highlighter_opts"] ||= {} @config["coderay"] ||= {} # XXX: Legacy. modernize_coderay_config + make_accessible end def convert(content) Kramdown::Document.new(content, @config).to_html end + private + 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 + # config[kramdown][syntax_higlighter] > config[kramdown][enable_coderay] > config[highlighter] # Where `enable_coderay` is now deprecated because Kramdown # supports Rouge now too. private def highlighter - @highlighter ||= begin - if highlighter = @config["syntax_highlighter"] then highlighter - elsif @config.key?("enable_coderay") && @config["enable_coderay"] - Jekyll::Deprecator.deprecation_message "You are using 'enable_coderay', use syntax_highlighter: coderay in your configuration file." + 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 @@ -59,7 +81,13 @@ module Jekyll def strip_coderay_prefix(hash) hash.each_with_object({}) do |(key, val), hsh| cleaned_key = key.gsub(/\Acoderay_/, "") - Jekyll::Deprecator.deprecation_message "You are using '#{key}'. Normalizing to #{cleaned_key}." if key != cleaned_key + + if key != cleaned_key + Jekyll::Deprecator.deprecation_message( + "You are using '#{key}'. Normalizing to #{cleaned_key}." + ) + end + hsh[cleaned_key] = val end end @@ -71,7 +99,9 @@ module Jekyll private 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." + 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"] \