Skip to content

Commit 17ae77a

Browse files
authored
Merge pull request #497 from aycabta/fix-regexp-literal-in-oneliner
Fix regexp literal in oneliner
2 parents 6cfcae2 + 74e9eee commit 17ae77a

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

lib/rdoc/parser/ruby.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1508,6 +1508,7 @@ def parse_method_or_yield_parameters(method = nil,
15081508
end
15091509
tk = get_tk
15101510
end
1511+
@scanner.first_in_method_statement = true
15111512

15121513
get_tkread_clean(/\s+/, ' ')
15131514
end

lib/rdoc/ruby_lex.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class Error < RDoc::Error
4545

4646
attr_accessor :continue
4747
attr_accessor :lex_state
48+
attr_accessor :first_in_method_statement
4849
attr_reader :reader
4950

5051
class << self
@@ -112,6 +113,7 @@ def initialize(content, options)
112113
@indent_stack = []
113114
@lex_state = :EXPR_BEG
114115
@space_seen = false
116+
@first_in_method_statement = false
115117
@after_question = false
116118

117119
@continue = false
@@ -353,6 +355,7 @@ def token
353355
begin
354356
tk = @OP.match(self)
355357
@space_seen = tk.kind_of?(TkSPACE)
358+
@first_in_method_statement = false if !@space_seen && @first_in_method_statement
356359
rescue SyntaxError => e
357360
raise Error, "syntax error: #{e.message}" if
358361
@exception_on_syntax_error
@@ -739,7 +742,7 @@ def lex_int2
739742
if :EXPR_FNAME == @lex_state or :EXPR_DOT == @lex_state
740743
@lex_state = :EXPR_ARG
741744
Token(TkId, op)
742-
elsif @lex_state == :EXPR_BEG || @lex_state == :EXPR_MID
745+
elsif @lex_state == :EXPR_BEG || @lex_state == :EXPR_MID || @first_in_method_statement
743746
identify_string(op)
744747
elsif peek(0) == '='
745748
getc

test/test_rdoc_parser_ruby.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2528,6 +2528,28 @@ def blah()
25282528
assert_equal markup_code, expected
25292529
end
25302530

2531+
def test_parse_statements_method_oneliner_with_regexp
2532+
util_parser <<RUBY
2533+
class Foo
2534+
def blah() /bar/ end
2535+
end
2536+
RUBY
2537+
2538+
expected = <<EXPTECTED
2539+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">blah</span>() <span class="ruby-regexp">/bar/</span> <span class="ruby-keyword">end</span>
2540+
EXPTECTED
2541+
expected = expected.rstrip
2542+
2543+
@parser.scan
2544+
2545+
foo = @top_level.classes.first
2546+
assert_equal 'Foo', foo.full_name
2547+
2548+
blah = foo.method_list.first
2549+
markup_code = blah.markup_code.sub(/^.*\n/, '')
2550+
assert_equal expected, markup_code
2551+
end
2552+
25312553
def test_parse_statements_embdoc_in_document
25322554
@filename = 'file.rb'
25332555
util_parser <<RUBY

0 commit comments

Comments
 (0)