module Bismas::Filter

Public Instance Methods

run(klass, options, &block) click to toggle source
   # File lib/bismas/filter.rb
35 def run(klass, options, &block)
36   execute = execute_options(options, &block)
37   mapping = mapping(options[:mapping], &block)
38 
39   key_format = options[:key_format]
40 
41   reader_options, writer_options = input_options(options), {
42     encoding:        encoding = options[:output_encoding],
43     key:             options[:output_key],
44     sort:            options[:sort],
45     padding_length:  options[:padding_length],
46     category_length: options[:category_length]
47   }
48 
49   execute[0][bind1 = binding]
50 
51   klass.open(options[:output], writer_options) { |writer|
52     Reader.parse_file(options[:input], reader_options) { |id, record|
53       execute[1][bind2 = binding]
54       record = mapping.apply(encode(record, encoding))
55 
56       execute[2][bind2]
57       writer[key_format % id] = record
58     }
59   }
60 
61   execute[3][bind1]
62 end