From f1492fa2bd324baa857987d0c0f10c9b8dfb4222 Mon Sep 17 00:00:00 2001
From: Bolarinwa Balogun
Date: Wed, 7 Aug 2019 10:38:00 -0400
Subject: [PATCH] Resolve error with code blocks in numbered lists (#3633)
---
app/labor/markdown_parser.rb | 4 ++--
spec/labor/markdown_parser_spec.rb | 12 ++++++++++++
.../user_preview_article_body.approved.html | 4 +---
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/app/labor/markdown_parser.rb b/app/labor/markdown_parser.rb
index 84d506a38..7ba1b91e1 100644
--- a/app/labor/markdown_parser.rb
+++ b/app/labor/markdown_parser.rb
@@ -161,8 +161,8 @@ class MarkdownParser
def escape_liquid_tags_in_codeblock(content)
# Escape codeblocks, code spans, and inline code
- content.gsub(/`{3}.*?`{3}|`{2}.+?`{2}|`{1}.+?`{1}/m) do |codeblock|
- if codeblock[0..2] == "```"
+ content.gsub(/[[:space:]]*`{3}.*?`{3}|`{2}.+?`{2}|`{1}.+?`{1}/m) do |codeblock|
+ if codeblock.match?(/[[:space:]]*`{3}/)
"\n{% raw %}\n" + codeblock + "\n{% endraw %}\n"
else
"{% raw %}" + codeblock + "{% endraw %}"
diff --git a/spec/labor/markdown_parser_spec.rb b/spec/labor/markdown_parser_spec.rb
index b1f7b2876..396ee98a4 100644
--- a/spec/labor/markdown_parser_spec.rb
+++ b/spec/labor/markdown_parser_spec.rb
@@ -17,6 +17,18 @@ RSpec.describe MarkdownParser do
expect(generate_and_parse_markdown(code_block)).to include("{% what %}")
end
+ it "escapes codeblocks in numbered lists" do
+ code_block = "1. Define your hooks in config file `lefthook.yml`\n
+ ```yaml
+ pre-push:\n parallel: true\n commands:\n rubocop:
+ run: bundle exec rspec --fail-fast\n
+ ```"
+ escaped_codeblock = generate_and_parse_markdown(code_block)
+ expect(escaped_codeblock).not_to include("```")
+ expect(escaped_codeblock).not_to include("`")
+ expect(escaped_codeblock).to include("bundle exec rspec --fail-fast")
+ end
+
it "escapes liquid tags in code spans" do
code_span = "``{% what %}``"
expect(generate_and_parse_markdown(code_span)).to include("{% what %}")
diff --git a/spec/support/fixtures/approvals/user_preview_article_body.approved.html b/spec/support/fixtures/approvals/user_preview_article_body.approved.html
index 60ad61e7b..2167afe02 100644
--- a/spec/support/fixtures/approvals/user_preview_article_body.approved.html
+++ b/spec/support/fixtures/approvals/user_preview_article_body.approved.html
@@ -96,9 +96,7 @@ Format:
the present is our past.
-I think you should use an <addr> element here instead.
-
-
+I think you should use an <addr> element here instead.
function fancyAlert(arg) {
if(arg) {