Sha256: f73fd0e8bc00f150380a130314f516ac2717a1eabf2089c9ed5e0a8bd72cefff
Contents?: true
Size: 999 Bytes
Versions: 6
Compression:
Stored size: 999 Bytes
Contents
require 'stringio' require 'ostruct' class ScenarioOutline attr_reader :examples def initialize(example_string) @example_string = example_string.gsub(/(^\n*)|(\s*\n*$)/,'') @examples = parse_example_string end private def parse_example_string example_string = StringIO.new(@example_string) header = parse_line(example_string.readline) example_lines = example_string.readlines parse_example_lines(header, example_lines) end def parse_line(line) line.lstrip.slice(1..line.length).chomp.split('|') end def parse_example_lines (header, example_lines) examples=[] example_lines.each do |example_line| examples << make_an_example(header, example_line) end examples end def make_an_example(header, example_line) newstruct = "{" parse_line(example_line).each_with_index do |example, index| newstruct += ":#{header[index].strip} => '#{example.strip}'," end OpenStruct.new(eval(newstruct.chop+"}")) end end
Version data entries
6 entries across 6 versions & 2 rubygems