class Bismas::CLI::Filter
Constants
- TYPES
Public Class Methods
defaults()
click to toggle source
Calls superclass method
# File lib/bismas/cli/filter.rb, line 35 def self.defaults super.merge( type: TYPES.first, key_format: '%s' ) end
Public Instance Methods
run(arguments)
click to toggle source
# File lib/bismas/cli/filter.rb, line 42 def run(arguments) quit unless arguments.empty? klass = case type = options[:type] when 'dat' Writer when 'dbm' require_gem 'midos' options[:output_encoding] ||= Midos::DEFAULT_ENCODING Midos::Writer else quit "Unsupported type: #{type}. Must be one of: #{TYPES.join(', ')}." end Bismas.filter(klass, options, &method(:quit)) end
Private Instance Methods
opts(opts)
click to toggle source
# File lib/bismas/cli/filter.rb, line 61 def opts(opts) opts.summary_width = 34 opts.option(:input__FILE, 'Path to input file [Default: STDIN]') opts.option(:output__FILE, 'Path to output file [Default: STDOUT]') opts.separator opts.separator 'Input options:' opts.option(:input_encoding__ENCODING, :N, "Input encoding [Default: #{DEFAULT_ENCODING}]") opts.separator opts.option(:input_key__KEY, :K, 'ID key of input file') opts.separator opts.switch(:strict, :S, 'Turn parse warnings into errors') opts.switch(:silent, :T, 'Silence parse warnings') opts.separator opts.switch(:legacy, :L, 'Use the legacy parser') opts.separator opts.separator 'Output options:' opts.option(:type__TYPE, "Output file type (#{TYPES.join(', ')}) [Default: #{TYPES.first}]") opts.separator opts.option(:output_encoding__ENCODING, :n, 'Output encoding [Default: depends on TYPE]') opts.separator opts.option(:output_key__KEY, :k, 'ID key of output file') opts.option(:key_format__KEY_FORMAT, :f, 'Key format [Default: %s]') opts.separator opts.option(:mapping__FILE_OR_YAML, 'Path to mapping file or YAML string') opts.separator opts.switch(:sort, 'Sort each record') opts.separator opts.option(:execute__FILE_OR_CODE, 'Code to execute for each _record_ before mapping') { |e| (options[:execute] ||= []) << e } opts.option(:execute_mapped__FILE_OR_CODE, :E, 'Code to execute for each _record_ after mapping') { |e| (options[:execute_mapped] ||= []) << e } opts.separator opts.option(:padding_length__LENGTH, :P, Integer, "Length of padding for TYPE=dat [Default: #{DEFAULT_PADDING_LENGTH}]") opts.separator opts.separator 'Common options:' opts.option(:category_length__LENGTH, :C, Integer, "Length of category for TYPE=dat [Default: #{DEFAULT_CATEGORY_LENGTH}]") end