[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
This commit is contained in:
Nobuyoshi Nakada 2023-12-06 18:09:30 +09:00 коммит произвёл git
Родитель 379f06797d
Коммит e03e872eea
2 изменённых файлов: 9 добавлений и 3 удалений

Просмотреть файл

@ -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')

Просмотреть файл

@ -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