Sha256: 07d01ba63c6bee00ed1bc3477a884ff304297b622ca18d363913e16579113174
Contents?: true
Size: 1007 Bytes
Versions: 4
Compression:
Stored size: 1007 Bytes
Contents
module Mandy class Reducer KEY_VALUE_SEPERATOR = "\t" unless defined?(KEY_VALUE_SEPERATOR) def initialize(input=STDIN, output=STDOUT) @input, @output = input, output end def self.compile(&blk) Class.new(Mandy::Reducer) do self.class_eval do define_method(:reducer, blk) if blk end end end def execute last_key, values = nil, [] @input.each_line do |line| key, value = line.split(KEY_VALUE_SEPERATOR) value.chomp! last_key = key if last_key.nil? if key != last_key reducer(last_key, values) last_key, values = key, [] end values << value end end def emit(key, value=nil) key = 'nil' if key.nil? @output.puts(value.nil? ? key.to_s : "#{key}\t#{value}") end private def reducer(key,value) # default reducer is simply a pass-through emit(key, value) end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
trafficbroker-mandy-0.1.0 | lib/reducer.rb |
trafficbroker-mandy-0.1.1 | lib/reducer.rb |
trafficbroker-mandy-0.1.2 | lib/reducer.rb |
trafficbroker-mandy-0.1.3 | lib/reducer.rb |