1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/rdoc/ruby_lex.rb: Return a TkHEREDOC instead of a TkSTRING when

the heredoc identifier is followed by a line-end.  This allows proper
  display of some HEREDOCs in source view.
* lib/rdoc/ruby_token.rb:  Added TkHEREDOC
* test/rdoc/test_rdoc_ruby_lex.rb:  Test for above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38443 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
drbrain 2012-12-18 07:31:36 +00:00
parent 84e3e8441c
commit 2e881bd59e
4 changed files with 81 additions and 10 deletions

View file

@ -982,12 +982,13 @@ class RDoc::RubyLex
indent = true
end
if /['"`]/ =~ ch
lt = ch
user_quote = lt = ch
quoted = ""
while (c = getc) && c != lt
quoted.concat c
end
else
user_quote = nil
lt = '"'
quoted = ch.dup
while (c = getc) && c =~ /\w/
@ -1007,8 +1008,17 @@ class RDoc::RubyLex
end
end
output_heredoc = reserve.join =~ /\A\r?\n\z/
if output_heredoc then
doc = '<<'
doc << '-' if indent
doc << "#{user_quote}#{quoted}#{user_quote}\n"
else
doc = '"'
end
@here_header = false
doc = '"'
while l = gets
l = l.sub(/(:?\r)?\n\z/, "\n")
if (indent ? l.strip : l.chomp) == quoted
@ -1016,7 +1026,12 @@ class RDoc::RubyLex
end
doc << l
end
doc << '"'
if output_heredoc then
doc << l.chomp
else
doc << '"'
end
@here_header = true
@here_readed.concat reserve
@ -1024,9 +1039,10 @@ class RDoc::RubyLex
ungetc ch
end
token_class = output_heredoc ? RDoc::RubyLex::TkHEREDOC : Ltype2Token[lt]
@ltype = ltback
@lex_state = EXPR_END
Token(Ltype2Token[lt], doc)
Token(token_class, doc)
end
def identify_quotation