13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/respectable.rb', line 13
def specify_each(table, **options, &block)
desc_template = options.has_key?(:desc) ? options[:desc] : Util.desc_template(block.parameters)
define_method(:specify_each) do |*, &block|
block.call(*@args) if @args
end
Util.table_data(table).each do |row|
desc_data = Hash[block.parameters.map(&:last).zip(row.map(&:inspect))]
description = desc_template % desc_data if desc_template
instance_eval(" it(description) do\n @args = Util.eval_row_items(row, binding)\n eval(block.source, binding, *block.source_location)\n end\n IT\n end\nend\n", *block.source_location)
|