Class Spec::Runner::SpecParser
In: lib/spec/runner/spec_parser.rb
Parent: Object

Methods

Public Instance methods

[Source]

    # File lib/spec/runner/spec_parser.rb, line 4
 4:       def spec_name_for(io, line_number)
 5:         source  = io.read
 6:         context = context_at_line(source, line_number)
 7:         spec    = spec_at_line(source, line_number)
 8:         if context && spec
 9:           "#{context} #{spec}"
10:         elsif context
11:           context
12:         else
13:           nil
14:         end
15:       end

Protected Instance methods

[Source]

    # File lib/spec/runner/spec_parser.rb, line 19
19:       def context_at_line(source, line_number)
20:         find_above(source, line_number, /^\s*context\s+['|"](.*)['|"]/)
21:       end

[Source]

    # File lib/spec/runner/spec_parser.rb, line 27
27:       def find_above(source, line_number, pattern)
28:         lines_above_reversed(source, line_number).each do |line| 
29:           return $1 if line =~ pattern
30:         end
31:         nil
32:       end

[Source]

    # File lib/spec/runner/spec_parser.rb, line 34
34:       def lines_above_reversed(source, line_number)
35:         lines = source.split("\n")
36:         lines[0...line_number].reverse
37:       end

[Source]

    # File lib/spec/runner/spec_parser.rb, line 23
23:       def spec_at_line(source, line_number)
24:         find_above(source, line_number, /^\s*specify\s+['|"](.*)['|"]/)
25:       end

[Validate]