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