module Bismas::Filter
Public Instance Methods
run(klass, options, &block)
click to toggle source
# File lib/bismas/filter.rb, line 35 def run(klass, options, &block) execute = execute(options.values_at(*%[execute execute_mapped]), &block) mapping = mapping(options[:mapping], &block) key_format = options[:key_format] writer_options = { encoding: encoding = options[:output_encoding], key: options[:output_key], sort: options[:sort], padding_length: options[:padding_length], category_length: options[:category_length] } reader_options = { encoding: options[:input_encoding], key: options[:input_key], strict: options[:strict], silent: options[:silent], legacy: options[:legacy], category_length: options[:category_length] } klass.open(options[:output], writer_options) { |writer| Reader.parse_file(options[:input], reader_options) { |id, record| execute[0][bind = binding] record = mapping.apply(encode(record, encoding)) execute[1][bind] writer[key_format % id] = record } } end