diff options
author | Nobuyoshi Nakada <[email protected]> | 2023-12-06 18:09:30 +0900 |
---|---|---|
committer | git <[email protected]> | 2023-12-06 09:35:44 +0000 |
commit | e03e872eea75ee63672c755dccc340a1f6042fce (patch) | |
tree | c52ef0d3c15a543236e7775204c52cbd45425889 | |
parent | 379f06797d563084ed28f397419f97b7d2e01d87 (diff) |
[ruby/rdoc] Only word-ending colon separates new definition
When followed by non-space characters, rather it looks like a URL or a
path name on Windows.
https://github.com/ruby/rdoc/commit/72c6560773
-rw-r--r-- | lib/rdoc/parser/c.rb | 6 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_parser_c.rb | 6 |
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/rdoc/parser/c.rb b/lib/rdoc/parser/c.rb index 6436ef243a..5555818e9e 100644 --- a/lib/rdoc/parser/c.rb +++ b/lib/rdoc/parser/c.rb @@ -938,10 +938,10 @@ class RDoc::Parser::C < RDoc::Parser # "/* definition: comment */" form. The literal ':' and '\' characters # can be escaped with a backslash. if type.downcase == 'const' then - no_match, new_definition, new_comment = comment.text.split(/(\A.*):/) + if /\A(.+?)?:(?!\S)/ =~ comment.text + new_definition, new_comment = $1, $' - if no_match and no_match.empty? then - if new_definition.empty? then # Default to literal C definition + if !new_definition # Default to literal C definition new_definition = definition else new_definition = new_definition.gsub(/\\([\\:])/, '\1') diff --git a/test/rdoc/test_rdoc_parser_c.rb b/test/rdoc/test_rdoc_parser_c.rb index 7e52b6292d..10bd7f5524 100644 --- a/test/rdoc/test_rdoc_parser_c.rb +++ b/test/rdoc/test_rdoc_parser_c.rb @@ -475,6 +475,9 @@ void Init_foo(){ /* TEST\:TEST: Checking to see if escaped colon works */ rb_define_const(cFoo, "TEST", rb_str_new2("TEST:TEST")); + /* TEST: TEST:Checking to see if only word-ending colon works */ + rb_define_const(cFoo, "TEST2", rb_str_new2("TEST:TEST")); + /* \\: The file separator on MS Windows */ rb_define_const(cFoo, "MSEPARATOR", rb_str_new2("\\")); @@ -538,6 +541,9 @@ void Init_foo(){ assert_equal ['TEST', 'TEST:TEST', 'Checking to see if escaped colon works '], constants.shift + assert_equal ['TEST2', 'TEST', + 'TEST:Checking to see if only word-ending colon works '], + constants.shift assert_equal ['MSEPARATOR', '\\', 'The file separator on MS Windows '], constants.shift |