diff --git a/app/lib/redcarpet/render/html_rouge.rb b/app/lib/redcarpet/render/html_rouge.rb index f46a6a7ee..04a2268cb 100644 --- a/app/lib/redcarpet/render/html_rouge.rb +++ b/app/lib/redcarpet/render/html_rouge.rb @@ -14,7 +14,11 @@ module Redcarpet @options[:link_attributes]&.each do |attribute, value| link_attributes += %( #{attribute}="#{value}") end - %(#{content}) + if (/\A(https?:\/\/)/.match? link) || link.nil? + %(#{content}) + else + %(#{content}) + end end def header(title, header_number) diff --git a/spec/labor/markdown_parser_spec.rb b/spec/labor/markdown_parser_spec.rb index 201e96d73..5b627675e 100644 --- a/spec/labor/markdown_parser_spec.rb +++ b/spec/labor/markdown_parser_spec.rb @@ -64,6 +64,21 @@ RSpec.describe MarkdownParser do expect(generate_and_parse_markdown(code_span)).to include random_word end + context "when rendering links markdown" do + # the following specs are testing HTMLRouge + it "renders properly if protocol is included" do + code_span = "[github](http://github.com)" + test = generate_and_parse_markdown(code_span) + expect(test).to eq("
\n\n") + end + + it "renders properly if protocol is not included" do + code_span = "[github](github.com)" + test = generate_and_parse_markdown(code_span) + expect(test).to eq("\n\n") + end + end + describe "mentions" do let(:user) { build_stubbed(:user) } @@ -248,17 +263,17 @@ RSpec.describe MarkdownParser do end end - context 'when word as snake case' do + context "when word as snake case" do it "doesn't change word" do code_block = "word_italic_" expect(generate_and_parse_markdown(code_block)).to include("word_italic_") end + end - context 'when double underline' do - it 'renders italic' do - code_block = "word__italic__" - expect(generate_and_parse_markdown(code_block)).to include("word_italic_") - end + context "when double underline" do + it "renders italic" do + code_block = "word__italic__" + expect(generate_and_parse_markdown(code_block)).to include("word_italic_") end end end