From 143367c5ca801a152315ee2de6f4766c6ae1df55 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 28 Jul 2017 12:05:43 -0400 Subject: [PATCH] kramdown: symbolize keys in-place (#6247) Merge pull request 6247 --- .../converters/markdown/kramdown_parser.rb | 12 +++----- test/test_kramdown.rb | 28 +++++++++++++++++-- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/lib/jekyll/converters/markdown/kramdown_parser.rb b/lib/jekyll/converters/markdown/kramdown_parser.rb index a7252f1a689..d1f93c63f09 100644 --- a/lib/jekyll/converters/markdown/kramdown_parser.rb +++ b/lib/jekyll/converters/markdown/kramdown_parser.rb @@ -43,13 +43,9 @@ def convert(content) 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 - ) + hash.keys.each do |key| + hash[key.to_sym] = hash[key] + make_accessible(hash[key]) if hash[key].is_a?(Hash) end end @@ -86,7 +82,7 @@ def highlighter private def strip_coderay_prefix(hash) hash.each_with_object({}) do |(key, val), hsh| - cleaned_key = key.gsub(%r!\Acoderay_!, "") + cleaned_key = key.to_s.gsub(%r!\Acoderay_!, "") if key != cleaned_key Jekyll::Deprecator.deprecation_message( diff --git a/test/test_kramdown.rb b/test/test_kramdown.rb index d8f886a4c1a..6396d67201b 100644 --- a/test/test_kramdown.rb +++ b/test/test_kramdown.rb @@ -20,11 +20,33 @@ class TestKramdown < JekyllUnitTest }, }, } + @kramdown_config_keys = @config["kramdown"].keys + @syntax_highlighter_opts_config_keys = \ + @config["kramdown"]["syntax_highlighter_opts"].keys @config = Jekyll.configuration(@config) - @markdown = Converters::Markdown.new( - @config - ) + @markdown = Converters::Markdown.new(@config) + @markdown.setup + end + + should "fill symbolized keys into config for compatibility with kramdown" do + kramdown_config = @markdown.instance_variable_get(:@parser) + .instance_variable_get(:@config) + + @kramdown_config_keys.each do |key| + assert kramdown_config.key?(key.to_sym), + "Expected #{kramdown_config} to include key #{key.to_sym.inspect}" + end + + @syntax_highlighter_opts_config_keys.each do |key| + assert kramdown_config["syntax_highlighter_opts"].key?(key.to_sym), + "Expected #{kramdown_config["syntax_highlighter_opts"]} to include " \ + "key #{key.to_sym.inspect}" + end + + assert_equal kramdown_config["smart_quotes"], kramdown_config[:smart_quotes] + assert_equal kramdown_config["syntax_highlighter_opts"]["css"], + kramdown_config[:syntax_highlighter_opts][:css] end should "run Kramdown" do