Render codespans properly in markdown (#1678)
* Explain test properly * Add tests for codespan parsing * Add codespan parsing logic
This commit is contained in:
parent
4073b869d6
commit
f5f206e40e
2 changed files with 23 additions and 6 deletions
|
|
@ -120,10 +120,12 @@ class MarkdownParser
|
|||
end
|
||||
|
||||
def escape_liquid_tags_in_codeblock(content)
|
||||
# Escape BOTH codeblock and inline code
|
||||
content.gsub(/`{3}.*?`{3}|`{1}.+?`{1}/m) do |codeblock|
|
||||
if codeblock.include?("```")
|
||||
# Escape codeblocks, code spans, and inline code
|
||||
content.gsub(/`{3}.*?`{3}|`{2}.+?`{2}|`{1}.+?`{1}/m) do |codeblock|
|
||||
if codeblock[0..2] == "```"
|
||||
"\n{% raw %}\n" + codeblock + "\n{% endraw %}\n"
|
||||
elsif codeblock[0..1] == "``"
|
||||
"{% raw %}" + codeblock + "{% endraw %}"
|
||||
else
|
||||
"{% raw %}" + codeblock + "{% endraw %}"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -8,16 +8,31 @@ RSpec.describe MarkdownParser do
|
|||
described_class.new(raw_markdown).finalize
|
||||
end
|
||||
|
||||
it "works" do
|
||||
it "renders plain text as-is" do
|
||||
expect(basic_parsed_markdown.finalize).to include(random_word)
|
||||
end
|
||||
|
||||
it "escape liquid tags in codeblock" do
|
||||
it "escapes liquid tags in codeblock" do
|
||||
code_block = "```\n{% what %}\n```"
|
||||
expect(generate_and_parse_markdown(code_block)).to include("{% what %}")
|
||||
end
|
||||
|
||||
it "escape liquid tags in inline code" do
|
||||
it "escapes liquid tags in code spans" do
|
||||
code_span = "``{% what %}``"
|
||||
expect(generate_and_parse_markdown(code_span)).to include("{% what %}")
|
||||
end
|
||||
|
||||
it "renders double backtick code spans properly" do
|
||||
code_span = "``#{random_word}``"
|
||||
expect(generate_and_parse_markdown(code_span)).to include random_word
|
||||
end
|
||||
|
||||
it "renders a double backtick codespan with a word wrapped in single backticks properly" do
|
||||
code_span = "`` `#{random_word}` ``"
|
||||
expect(generate_and_parse_markdown(code_span)).to include "`#{random_word}`"
|
||||
end
|
||||
|
||||
it "escapes liquid tags in inline code" do
|
||||
inline_code = "`{% what %}`"
|
||||
expect(generate_and_parse_markdown(inline_code)).to include(inline_code[1..-2])
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue