diff --git a/lib/rdoc/markdown.kpeg b/lib/rdoc/markdown.kpeg index 0e15a604f4..893204151f 100644 --- a/lib/rdoc/markdown.kpeg +++ b/lib/rdoc/markdown.kpeg @@ -403,6 +403,8 @@ # the note order list for proper display at the end of the document. def note_for ref + return unless @note_order + @note_order << ref label = @note_order.length diff --git a/lib/rdoc/markdown.rb b/lib/rdoc/markdown.rb index c01cab0096..4326fb6549 100644 --- a/lib/rdoc/markdown.rb +++ b/lib/rdoc/markdown.rb @@ -788,6 +788,8 @@ def note label # the note order list for proper display at the end of the document. def note_for ref + return unless @note_order + @note_order << ref label = @note_order.length diff --git a/test/rdoc/rdoc_markdown_test.rb b/test/rdoc/rdoc_markdown_test.rb index 646f12a999..5d432c6cc5 100644 --- a/test/rdoc/rdoc_markdown_test.rb +++ b/test/rdoc/rdoc_markdown_test.rb @@ -1002,6 +1002,29 @@ def test_parse_note_inline assert_equal expected, doc end + def test_parse_note_invalid_reference + @parser.notes = true + + assert_kind_of RDoc::Markup::Document, parse("[[^0]\n") + end + + def test_parse_note_reference_in_reference_label + @parser.notes = true + + doc = parse <<~MD + [foo[^1]bar] + + [^1]: footnote + MD + + expected = doc( + para("[foo{*1}[rdoc-label:foottext-1:footmark-1]bar]"), + rule(1), + para("{^1}[rdoc-label:footmark-1:foottext-1] footnote")) + + assert_equal expected, doc + end + def test_parse_note_no_notes @parser.notes = false