diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-06-07 18:45:49 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-06-07 18:57:58 +0900 |
commit | 6566919176834efb47ea717967669ca83eb78347 (patch) | |
tree | 6366383ce93112cc60013ce3dc39533f02ec8144 | |
parent | a6a26e42b15c46f117f4fce07a2050e9d727355d (diff) |
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: ruby/rdoc#694
Closes: ruby/rdoc#697
Closes: ruby/rdoc#705
-rw-r--r-- | lib/rdoc/parser/ripper_state_lex.rb | 3 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_parser_ruby.rb | 15 |
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/rdoc/parser/ripper_state_lex.rb b/lib/rdoc/parser/ripper_state_lex.rb index cc7a87976c..5492f08726 100644 --- a/lib/rdoc/parser/ripper_state_lex.rb +++ b/lib/rdoc/parser/ripper_state_lex.rb @@ -494,7 +494,8 @@ class RDoc::Parser::RipperStateLex private def heredoc_end?(name, indent, tk) result = false if :on_heredoc_end == tk[:kind] then - tk_name = (indent ? tk[:text].gsub(/^ *(.+)\n?$/, '\1') : tk[:text].gsub(/\n\z/, '')) + tk_name = tk[:text].chomp + tk_name.lstrip! if indent if name == tk_name result = true end diff --git a/test/rdoc/test_rdoc_parser_ruby.rb b/test/rdoc/test_rdoc_parser_ruby.rb index 8188318769..97abafca58 100644 --- a/test/rdoc/test_rdoc_parser_ruby.rb +++ b/test/rdoc/test_rdoc_parser_ruby.rb @@ -2914,6 +2914,21 @@ EXPECTED assert_equal expected, markup_code end + def test_parse_heredoc_end + code = "A = <<eos\n""OK\n""eos\n" + util_parser code + @parser.parse_statements @top_level + @parser.scan + c = @top_level.classes.first.constants.first + assert_equal("A", c.name) + + util_parser code.gsub(/$/, "\r") + @parser.parse_statements @top_level + @parser.scan + c = @top_level.classes.first.constants.first + assert_equal("A", c.name) + end + def test_parse_statements_method_oneliner_with_regexp util_parser <<RUBY class Foo |