bin/masticate in masticate-0.1.5 vs bin/masticate in masticate-0.2

- old
+ new

@@ -1,119 +1,8 @@ #!/usr/bin/env ruby require_relative "../lib/masticate" -require "optparse" -command = ARGV.shift +masticator = Masticate::MyOptionParser.new +command, options, filenames = masticator.parse -options = {} -OptionParser.new do |opts| - opts.banner = "Usage: example.rb [options]" - - opts.on("--format FORMAT", String, "Specify format") do |v| - options[:format] = v - end - - opts.on("--delim DELIMITER", String, "Specify field delimiter (character or TAB; default is ',')") do |v| - options[:col_sep] = v - options[:col_sep] = "\t" if options[:col_sep] == "TAB" - end - - opts.on("--quote QUOTE-CHAR", String, "Specify character used for quoting fields (optional; default is no quoting)") do |char| - options[:quote_char] = char - end - - opts.on("--stats", "(for *sniff*) collect & display input stats") do - options[:stats] = true - end - - opts.on("--fields LIST", Array, "Specify fields to select") do |list| - options[:fields] = list - end - - opts.on("--field FIELD", String, "Specify field to convert") do |f| - options[:field] = f - end - - opts.on("--snip DIRECTIVE", String, "Specify header fields to snip: first N, or by name") do |f| - options[:snip] = f.to_i - end - - opts.on("--from REGEXP", String, "Regular expression for gsub conversion") do |s| - options[:from] = s - end - - opts.on("--to STRING", String, "Result string for gsub conversion") do |s| - options[:to] = s - end - - opts.on("--inlined", "(for *mend* only) Source file has headers inlined on each line") do |b| - options[:inlined] = true - end - - opts.on("--dejunk", "(for *mend* only) Expunge junk lines from source") do |b| - options[:dejunk] = true - end - - opts.on("--by FIELD", String, "(for *maxrows* only) Field to group by") do |f| - options[:by] = f - end - - opts.on("--max FIELD", String, "(for *maxrows* only) Field to find max value for") do |f| - options[:max] = f - end -end.parse! - -filename = ARGV.shift # use stdin if no filename provided - -def logmessage(command, options, results) - $stderr.puts <<-EOT -* masticate #{command} (#{options.keys.join(', ')}) - Lines in input: #{results[:input_count]} - Lines in output: #{results[:output_count]} -EOT - if results[:field_counts] - $stderr.puts " Field counts: #{results[:field_counts].inspect}" - end -end - -case command -when 'sniff' - results = Masticate.sniff(filename, options) - col_sep = results[:col_sep] - col_sep = "TAB" if col_sep == "\t" - quote_char = results[:quote_char] || "NONE" - $stderr.puts <<-EOT -Processing complete. - Input delimiter: #{col_sep} - Quote char: #{quote_char} - Field counts: #{results[:field_counts].inspect} - Headers: #{results[:headers].join(',')} -EOT - -when 'mend' - results = Masticate.mend(filename, options) - logmessage(command, options, results) - -when 'csvify' - results = Masticate.csvify(filename, options) - logmessage(command, options, results) - -when 'pluck' - results = Masticate.pluck(filename, options) - logmessage(command, options, results) - -when 'datify' - results = Masticate.datify(filename, options) - logmessage(command, options, results) - -when 'gsub' - results = Masticate.gsub(filename, options) - logmessage(command, options, results) - -when 'maxrows' - results = Masticate.maxrows(filename, options) - logmessage(command, options, results) - -else - raise "unknown command #{command}" -end +masticator.execute(command, options, filenames)