671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
|
# File 'lib/remi/transform.rb', line 671
def transform(row)
sieve_keys = @sieve_table.first.index.to_a
sieve_result_key = sieve_keys.pop
raise ArgumentError, "#{sieve_keys - row.source_keys} not found in row" unless (sieve_keys - row.source_keys).size == 0
@sieve_table.each.find do |sieve_row|
match_row = true
sieve_keys.each do |sieve_key|
match_value = if sieve_row[sieve_key].is_a?(Regexp)
!!sieve_row[sieve_key].match(row[sieve_key])
else
sieve_row[sieve_key] == row[sieve_key]
end
match_row &&= sieve_row[sieve_key].nil? || match_value
end
match_row
end[sieve_result_key]
end
|