Skip to content

Commit 5f9603f

Browse files
nobuaycabta
authored andcommitted
ripper_state_lex.rb: chomp CR
* lib/rdoc/parser/ripper_state_lex.rb (RDoc::Parser::RipperStateLex): chomp newline, including CR, from here document terminator. Closes: #694 Closes: #697 Closes: #705
1 parent c5569e7 commit 5f9603f

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

lib/rdoc/parser/ripper_state_lex.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,8 @@ def get_squashed_tk
494494
private def heredoc_end?(name, indent, tk)
495495
result = false
496496
if :on_heredoc_end == tk[:kind] then
497-
tk_name = (indent ? tk[:text].gsub(/^ *(.+)\n?$/, '\1') : tk[:text].gsub(/\n\z/, ''))
497+
tk_name = tk[:text].chomp
498+
tk_name.lstrip! if indent
498499
if name == tk_name
499500
result = true
500501
end

test/test_rdoc_parser_ruby.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2914,6 +2914,21 @@ def blah()
29142914
assert_equal expected, markup_code
29152915
end
29162916

2917+
def test_parse_heredoc_end
2918+
code = "A = <<eos\n""OK\n""eos\n"
2919+
util_parser code
2920+
@parser.parse_statements @top_level
2921+
@parser.scan
2922+
c = @top_level.classes.first.constants.first
2923+
assert_equal("A", c.name)
2924+
2925+
util_parser code.gsub(/$/, "\r")
2926+
@parser.parse_statements @top_level
2927+
@parser.scan
2928+
c = @top_level.classes.first.constants.first
2929+
assert_equal("A", c.name)
2930+
end
2931+
29172932
def test_parse_statements_method_oneliner_with_regexp
29182933
util_parser <<RUBY
29192934
class Foo

0 commit comments

Comments
 (0)