Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/rdoc/markdown.kpeg
Original file line number Diff line number Diff line change
Expand Up @@ -617,8 +617,8 @@ BlockQuote = BlockQuoteRaw:a

BlockQuoteRaw = @StartList:a
(( ">" " "? Line:l { a << l } )
( !">" !@BlankLine Line:c { a << c } )*
( @BlankLine:n { a << n } )*
( !">" !@BlankLine !(AtxStart @Spacechar) !Bullet !Enumerator !( &{ github? } Ticks3 ) Line:c { a << c } )*
( ">" @BlankLine:n { a << n } )*
)+
{ inner_parse a.join }

Expand Down
186 changes: 160 additions & 26 deletions lib/rdoc/markdown.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1656,7 +1656,7 @@ def _BlockQuote
return _tmp
end

# BlockQuoteRaw = @StartList:a (">" " "? Line:l { a << l } (!">" !@BlankLine Line:c { a << c })* (@BlankLine:n { a << n })*)+ { inner_parse a.join }
# BlockQuoteRaw = @StartList:a (">" " "? Line:l { a << l } (!">" !@BlankLine !(AtxStart @Spacechar) !Bullet !Enumerator !(&{ github? } Ticks3) Line:c { a << c })* (">" @BlankLine:n { a << n })*)+ { inner_parse a.join }
def _BlockQuoteRaw

_save = self.pos
Expand Down Expand Up @@ -1718,6 +1718,68 @@ def _BlockQuoteRaw
self.pos = _save5
break
end
_save8 = self.pos

_save9 = self.pos
while true # sequence
_tmp = apply(:_AtxStart)
unless _tmp
self.pos = _save9
break
end
_tmp = _Spacechar()
unless _tmp
self.pos = _save9
end
break
end # end sequence

_tmp = _tmp ? nil : true
self.pos = _save8
unless _tmp
self.pos = _save5
break
end
_save10 = self.pos
_tmp = apply(:_Bullet)
_tmp = _tmp ? nil : true
self.pos = _save10
unless _tmp
self.pos = _save5
break
end
_save11 = self.pos
_tmp = apply(:_Enumerator)
_tmp = _tmp ? nil : true
self.pos = _save11
unless _tmp
self.pos = _save5
break
end
_save12 = self.pos

_save13 = self.pos
while true # sequence
_save14 = self.pos
_tmp = begin; github? ; end
self.pos = _save14
unless _tmp
self.pos = _save13
break
end
_tmp = apply(:_Ticks3)
unless _tmp
self.pos = _save13
end
break
end # end sequence

_tmp = _tmp ? nil : true
self.pos = _save12
unless _tmp
self.pos = _save5
break
end
_tmp = apply(:_Line)
c = @result
unless _tmp
Expand All @@ -1741,18 +1803,23 @@ def _BlockQuoteRaw
end
while true

_save9 = self.pos
_save16 = self.pos
while true # sequence
_tmp = match_string(">")
unless _tmp
self.pos = _save16
break
end
_tmp = _BlankLine()
n = @result
unless _tmp
self.pos = _save9
self.pos = _save16
break
end
@result = begin; a << n ; end
_tmp = true
unless _tmp
self.pos = _save9
self.pos = _save16
end
break
end # end sequence
Expand All @@ -1769,65 +1836,127 @@ def _BlockQuoteRaw
if _tmp
while true

_save10 = self.pos
_save17 = self.pos
while true # sequence
_tmp = match_string(">")
unless _tmp
self.pos = _save10
self.pos = _save17
break
end
_save11 = self.pos
_save18 = self.pos
_tmp = match_string(" ")
unless _tmp
_tmp = true
self.pos = _save11
self.pos = _save18
end
unless _tmp
self.pos = _save10
self.pos = _save17
break
end
_tmp = apply(:_Line)
l = @result
unless _tmp
self.pos = _save10
self.pos = _save17
break
end
@result = begin; a << l ; end
_tmp = true
unless _tmp
self.pos = _save10
self.pos = _save17
break
end
while true

_save13 = self.pos
_save20 = self.pos
while true # sequence
_save14 = self.pos
_save21 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save14
self.pos = _save21
unless _tmp
self.pos = _save13
self.pos = _save20
break
end
_save15 = self.pos
_save22 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save15
self.pos = _save22
unless _tmp
self.pos = _save13
self.pos = _save20
break
end
_save23 = self.pos

_save24 = self.pos
while true # sequence
_tmp = apply(:_AtxStart)
unless _tmp
self.pos = _save24
break
end
_tmp = _Spacechar()
unless _tmp
self.pos = _save24
end
break
end # end sequence

_tmp = _tmp ? nil : true
self.pos = _save23
unless _tmp
self.pos = _save20
break
end
_save25 = self.pos
_tmp = apply(:_Bullet)
_tmp = _tmp ? nil : true
self.pos = _save25
unless _tmp
self.pos = _save20
break
end
_save26 = self.pos
_tmp = apply(:_Enumerator)
_tmp = _tmp ? nil : true
self.pos = _save26
unless _tmp
self.pos = _save20
break
end
_save27 = self.pos

_save28 = self.pos
while true # sequence
_save29 = self.pos
_tmp = begin; github? ; end
self.pos = _save29
unless _tmp
self.pos = _save28
break
end
_tmp = apply(:_Ticks3)
unless _tmp
self.pos = _save28
end
break
end # end sequence

_tmp = _tmp ? nil : true
self.pos = _save27
unless _tmp
self.pos = _save20
break
end
_tmp = apply(:_Line)
c = @result
unless _tmp
self.pos = _save13
self.pos = _save20
break
end
@result = begin; a << c ; end
_tmp = true
unless _tmp
self.pos = _save13
self.pos = _save20
end
break
end # end sequence
Expand All @@ -1836,23 +1965,28 @@ def _BlockQuoteRaw
end
_tmp = true
unless _tmp
self.pos = _save10
self.pos = _save17
break
end
while true

_save17 = self.pos
_save31 = self.pos
while true # sequence
_tmp = match_string(">")
unless _tmp
self.pos = _save31
break
end
_tmp = _BlankLine()
n = @result
unless _tmp
self.pos = _save17
self.pos = _save31
break
end
@result = begin; a << n ; end
_tmp = true
unless _tmp
self.pos = _save17
self.pos = _save31
end
break
end # end sequence
Expand All @@ -1861,7 +1995,7 @@ def _BlockQuoteRaw
end
_tmp = true
unless _tmp
self.pos = _save10
self.pos = _save17
end
break
end # end sequence
Expand Down Expand Up @@ -16457,7 +16591,7 @@ def _DefinitionListDefinition
Rules[:_SetextHeading2] = rule_info("SetextHeading2", "&(@RawLine SetextBottom2) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom2 { RDoc::Markup::Heading.new(2, a.join) }")
Rules[:_Heading] = rule_info("Heading", "(SetextHeading | AtxHeading)")
Rules[:_BlockQuote] = rule_info("BlockQuote", "BlockQuoteRaw:a { RDoc::Markup::BlockQuote.new(*a) }")
Rules[:_BlockQuoteRaw] = rule_info("BlockQuoteRaw", "@StartList:a (\">\" \" \"? Line:l { a << l } (!\">\" !@BlankLine Line:c { a << c })* (@BlankLine:n { a << n })*)+ { inner_parse a.join }")
Rules[:_BlockQuoteRaw] = rule_info("BlockQuoteRaw", "@StartList:a (\">\" \" \"? Line:l { a << l } (!\">\" !@BlankLine !(AtxStart @Spacechar) !Bullet !Enumerator !(&{ github? } Ticks3) Line:c { a << c })* (\">\" @BlankLine:n { a << n })*)+ { inner_parse a.join }")
Rules[:_NonblankIndentedLine] = rule_info("NonblankIndentedLine", "!@BlankLine IndentedLine")
Rules[:_VerbatimChunk] = rule_info("VerbatimChunk", "@BlankLine*:a NonblankIndentedLine+:b { a.concat b }")
Rules[:_Verbatim] = rule_info("Verbatim", "VerbatimChunk+:a { RDoc::Markup::Verbatim.new(*a.flatten) }")
Expand Down
11 changes: 10 additions & 1 deletion lib/rdoc/markup/to_html_crossref.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ def init_link_notation_regexp_handlings
def cross_reference(name, text = nil, code = true, rdoc_ref: false)
lookup = name

display_name = name
name = name[1..-1] unless @show_hash if name[0, 1] == '#'

if !name.end_with?('+@', '-@') && match = name.match(/(.*[^#:])?@(.*)/)
Expand All @@ -73,7 +74,15 @@ def cross_reference(name, text = nil, code = true, rdoc_ref: false)
text ||= name
end

link lookup, text, code, rdoc_ref: rdoc_ref
result = link lookup, text, code, rdoc_ref: rdoc_ref

# If the cross-reference didn't resolve to a link, restore the original
# text including the '#' prefix that was stripped above.
if result == text && display_name != name && !text.start_with?('#')
display_name
else
result
end
end

##
Expand Down
7 changes: 7 additions & 0 deletions test/rdoc/markup/to_html_crossref_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,13 @@ def hyper(reference)
"rdoc-ref:#{reference}"
end

def test_handle_regexp_CROSSREF_hash_preserved_for_unresolved
@to.show_hash = false

# #no should not lose its '#' when it doesn't resolve to a method
assert_equal "#no", REGEXP_HANDLING('#no')
end

def tidy(reference)
"{tidy}[rdoc-ref:#{reference}]"
end
Expand Down
Loading