class Given::LineExtractor

Public Class Methods

new(file_cache=nil) click to toggle source
  # File lib/given/line_extractor.rb
6 def initialize(file_cache=nil)
7   @files = file_cache || FileCache.new
8 end

Public Instance Methods

line(file_name, line) click to toggle source
   # File lib/given/line_extractor.rb
10 def line(file_name, line)
11   lines = @files.get(file_name)
12   extract_lines_from(lines, line-1)
13 end
to_s() click to toggle source
   # File lib/given/line_extractor.rb
15 def to_s
16   "<LineExtractor>"
17 end

Private Instance Methods

complete_sexp?(sexp) click to toggle source
   # File lib/given/line_extractor.rb
35 def complete_sexp?(sexp)
36   Sorcerer.source(sexp)
37   true
38 rescue Sorcerer::Resource::NotSexpError
39   false
40 end
extract_lines_from(lines, line_index) click to toggle source
   # File lib/given/line_extractor.rb
21 def extract_lines_from(lines, line_index)
22   return lines[line_index] unless NATURAL_ASSERTIONS_SUPPORTED
23   result = lines[line_index]
24   while result && incomplete?(result)
25     line_index += 1
26     result << lines[line_index]
27   end
28   result
29 end
incomplete?(string) click to toggle source
   # File lib/given/line_extractor.rb
31 def incomplete?(string)
32   !complete_sexp?(parse(string))
33 end
parse(string) click to toggle source
   # File lib/given/line_extractor.rb
42 def parse(string)
43   Ripper::SexpBuilder.new(string).parse
44 end