From 7e41afa2bbab5376fcd904a405a1e3a64753432f Mon Sep 17 00:00:00 2001 From: Jonathan Hefner Date: Sun, 27 Aug 2023 16:33:05 -0500 Subject: [PATCH] Improve code language detection for ERB and HTML This improves language detection for code examples that include ERB or HTML tags in a trailing position, such as `Title: <%= @post.title %>`. --- lib/sdoc/postprocessor.rb | 2 +- spec/postprocessor_spec.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/sdoc/postprocessor.rb b/lib/sdoc/postprocessor.rb index 2cdae5eb..25a97ace 100644 --- a/lib/sdoc/postprocessor.rb +++ b/lib/sdoc/postprocessor.rb @@ -130,7 +130,7 @@ def guess_code_language(code) else "yaml" end - when /^ *<[%a-z]/i + when /^ *<[%a-z]|%>$|<\/\w+>$/i "erb" # also highlights HTML else "ruby" diff --git a/spec/postprocessor_spec.rb b/spec/postprocessor_spec.rb index 16f295d4..ae2ea09e 100644 --- a/spec/postprocessor_spec.rb +++ b/spec/postprocessor_spec.rb @@ -400,6 +400,10 @@ <%= 1 + 1 %> ERB + _(SDoc::Postprocessor.guess_code_language(<<~ERB)).must_equal "erb" + 1 + 1 = <%= 1 + 1 %> + ERB + _(SDoc::Postprocessor.guess_code_language(<<~ERB)).must_equal "erb" <% x = 1 + 1 %> ERB @@ -413,6 +417,10 @@ _(SDoc::Postprocessor.guess_code_language(<<~HTML)).must_equal "erb"

1 + 1 = 2

HTML + + _(SDoc::Postprocessor.guess_code_language(<<~HTML)).must_equal "erb" + 1 + 1 = 2 + HTML end it "guesses erb for HTML that includes ERB" do @@ -432,6 +440,11 @@ Object.new # => # RUBY + _(SDoc::Postprocessor.guess_code_language(<<~RUBY)).must_equal "ruby" + Pathname("/span") + # => # + RUBY + _(SDoc::Postprocessor.guess_code_language(<<~RUBY)).must_equal "ruby" image_tag("image.png") # =>