Sha256: 7ebfe15305e42948d6b014810a80c1f73c18edc40100d4ef0db75e20b30f62ba
Contents?: true
Size: 1.14 KB
Versions: 1
Compression:
Stored size: 1.14 KB
Contents
# extract subset of columns from CSV require "csv" class Masticate::Gsubber < Masticate::Base def gsub(opts) @output = opts[:output] ? File.open(opts[:output], "w") : $stdout csv_options = {} csv_options[:col_sep] = opts[:col_sep] if opts[:col_sep] csv_options[:quote_char] = opts[:quote_char] || opts[:col_sep] if opts[:quote_char] || opts[:col_sep] field = opts[:field] or raise "missing field to gsub" from = Regexp.new(opts[:from]) or raise "Invalid regex '#{opts[:from]}' for conversion" to = opts[:to] or raise "missing 'to' string for gsub" @output_count = 0 headers = nil with_input do |input| while line = get row = CSV.parse_line(line, csv_options) if !headers headers = row index = headers.index(field) or raise "Unable to find column '#{field}'" emit(line) else oldval = row[index] newval = oldval.gsub(from, to) row[index] = newval emit(row.to_csv) end end end @output.close if opts[:output] { :input_count => input_count, :output_count => @output_count } end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
masticate-0.1.0 | lib/masticate/gsubber.rb |