[ruby/rdoc] Optimize RawLine by using a regexp instead of negative look-ahead rule
This improves the performance in some cases. `rdoc .../gems/sinatra-2.1.0/README.md` takes 10.5 sec. before this change, and 7.1 sec. after this change. `make rdoc` of ruby/ruby takes 19.3 sec. before this change, 18.1 sec. after this change. https://github.com/ruby/rdoc/commit/7cf8281e3e
This commit is contained in:
parent
6e65e04186
commit
08137c5dd9
@ -14918,7 +14918,7 @@ class RDoc::Markdown
|
|||||||
return _tmp
|
return _tmp
|
||||||
end
|
end
|
||||||
|
|
||||||
# RawLine = (< (!"\r" !"\n" .)* @Newline > | < .+ > @Eof) { text }
|
# RawLine = (< /[^\r\n]*/ @Newline > | < .+ > @Eof) { text }
|
||||||
def _RawLine
|
def _RawLine
|
||||||
|
|
||||||
_save = self.pos
|
_save = self.pos
|
||||||
@ -14930,36 +14930,7 @@ class RDoc::Markdown
|
|||||||
|
|
||||||
_save2 = self.pos
|
_save2 = self.pos
|
||||||
while true # sequence
|
while true # sequence
|
||||||
while true
|
_tmp = scan(/\G(?-mix:[^\r\n]*)/)
|
||||||
|
|
||||||
_save4 = self.pos
|
|
||||||
while true # sequence
|
|
||||||
_save5 = self.pos
|
|
||||||
_tmp = match_string("\r")
|
|
||||||
_tmp = _tmp ? nil : true
|
|
||||||
self.pos = _save5
|
|
||||||
unless _tmp
|
|
||||||
self.pos = _save4
|
|
||||||
break
|
|
||||||
end
|
|
||||||
_save6 = self.pos
|
|
||||||
_tmp = match_string("\n")
|
|
||||||
_tmp = _tmp ? nil : true
|
|
||||||
self.pos = _save6
|
|
||||||
unless _tmp
|
|
||||||
self.pos = _save4
|
|
||||||
break
|
|
||||||
end
|
|
||||||
_tmp = get_byte
|
|
||||||
unless _tmp
|
|
||||||
self.pos = _save4
|
|
||||||
end
|
|
||||||
break
|
|
||||||
end # end sequence
|
|
||||||
|
|
||||||
break unless _tmp
|
|
||||||
end
|
|
||||||
_tmp = true
|
|
||||||
unless _tmp
|
unless _tmp
|
||||||
self.pos = _save2
|
self.pos = _save2
|
||||||
break
|
break
|
||||||
@ -14977,10 +14948,10 @@ class RDoc::Markdown
|
|||||||
break if _tmp
|
break if _tmp
|
||||||
self.pos = _save1
|
self.pos = _save1
|
||||||
|
|
||||||
_save7 = self.pos
|
_save3 = self.pos
|
||||||
while true # sequence
|
while true # sequence
|
||||||
_text_start = self.pos
|
_text_start = self.pos
|
||||||
_save8 = self.pos
|
_save4 = self.pos
|
||||||
_tmp = get_byte
|
_tmp = get_byte
|
||||||
if _tmp
|
if _tmp
|
||||||
while true
|
while true
|
||||||
@ -14989,18 +14960,18 @@ class RDoc::Markdown
|
|||||||
end
|
end
|
||||||
_tmp = true
|
_tmp = true
|
||||||
else
|
else
|
||||||
self.pos = _save8
|
self.pos = _save4
|
||||||
end
|
end
|
||||||
if _tmp
|
if _tmp
|
||||||
text = get_text(_text_start)
|
text = get_text(_text_start)
|
||||||
end
|
end
|
||||||
unless _tmp
|
unless _tmp
|
||||||
self.pos = _save7
|
self.pos = _save3
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
_tmp = _Eof()
|
_tmp = _Eof()
|
||||||
unless _tmp
|
unless _tmp
|
||||||
self.pos = _save7
|
self.pos = _save3
|
||||||
end
|
end
|
||||||
break
|
break
|
||||||
end # end sequence
|
end # end sequence
|
||||||
@ -16661,7 +16632,7 @@ class RDoc::Markdown
|
|||||||
Rules[:_OptionallyIndentedLine] = rule_info("OptionallyIndentedLine", "Indent? Line")
|
Rules[:_OptionallyIndentedLine] = rule_info("OptionallyIndentedLine", "Indent? Line")
|
||||||
Rules[:_StartList] = rule_info("StartList", "&. { [] }")
|
Rules[:_StartList] = rule_info("StartList", "&. { [] }")
|
||||||
Rules[:_Line] = rule_info("Line", "@RawLine:a { a }")
|
Rules[:_Line] = rule_info("Line", "@RawLine:a { a }")
|
||||||
Rules[:_RawLine] = rule_info("RawLine", "(< (!\"\\r\" !\"\\n\" .)* @Newline > | < .+ > @Eof) { text }")
|
Rules[:_RawLine] = rule_info("RawLine", "(< /[^\\r\\n]*/ @Newline > | < .+ > @Eof) { text }")
|
||||||
Rules[:_SkipBlock] = rule_info("SkipBlock", "(HtmlBlock | (!\"\#\" !SetextBottom1 !SetextBottom2 !@BlankLine @RawLine)+ @BlankLine* | @BlankLine+ | @RawLine)")
|
Rules[:_SkipBlock] = rule_info("SkipBlock", "(HtmlBlock | (!\"\#\" !SetextBottom1 !SetextBottom2 !@BlankLine @RawLine)+ @BlankLine* | @BlankLine+ | @RawLine)")
|
||||||
Rules[:_ExtendedSpecialChar] = rule_info("ExtendedSpecialChar", "&{ notes? } \"^\"")
|
Rules[:_ExtendedSpecialChar] = rule_info("ExtendedSpecialChar", "&{ notes? } \"^\"")
|
||||||
Rules[:_NoteReference] = rule_info("NoteReference", "&{ notes? } RawNoteReference:ref { note_for ref }")
|
Rules[:_NoteReference] = rule_info("NoteReference", "&{ notes? } RawNoteReference:ref { note_for ref }")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user