class ExampleBlock
Attributes
assertion[R]
assertion_sexp[R]
block[R]
code[R]
sexp[R]
Public Class Methods
new(block)
click to toggle source
# File lib/matest/example_block.rb, line 11 def initialize(block) @block = block @code = generate_code @sexp = Ripper::SexpBuilder.new(code).parse.last @assertion_sexp = @sexp.last @assertion = Sorcerer.source(assertion_sexp) end
Public Instance Methods
call()
click to toggle source
# File lib/matest/example_block.rb, line 21 def call block.call end
source_location()
click to toggle source
# File lib/matest/example_block.rb, line 25 def source_location block.source_location end
Private Instance Methods
generate_code()
click to toggle source
# File lib/matest/example_block.rb, line 31 def generate_code lineno = block.source_location.last current_line = lineno-1 valid_lines = [lines[current_line]] until Ripper::SexpBuilder.new(valid_lines.join("\n")).parse current_line += 1 valid_lines << lines[current_line] end code = valid_lines[1..-2].join return code unless code == "" valid_lines = [lines[lineno-1]].join code = Ripper::SexpBuilder.new(valid_lines).parse.last.last.last.last Sorcerer.source(code) rescue Sorcerer::Resource::NotSexpError => e "Matest::SkipMe.new" end
get_lines()
click to toggle source
# File lib/matest/example_block.rb, line 57 def get_lines file = File.open(block.source_location.first) source = file.read source.each_line.to_a end
lines()
click to toggle source
# File lib/matest/example_block.rb, line 53 def lines @lines ||= get_lines end