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