Sha256: 6910d07a20c1a66e6f1998999d2b2192ff4d4b29ee22b027f63cb4f1784c79f2

Contents?: true

Size: 864 Bytes

Versions: 4

Compression:

Stored size: 864 Bytes

Contents

module Mandy
  class Mapper
    
    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::Mapper) do 
        self.class_eval do
          define_method(:mapper, blk) if blk
        end
      end
    end
    
    def execute
      @input.each_line do |line|
         key, value = line.split(KEY_VALUE_SEPERATOR)
         key, value = nil, key if value.nil?
         value.chomp!
         mapper(key, 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 mapper(key,value)
      # default map 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/mapper.rb
trafficbroker-mandy-0.1.1 lib/mapper.rb
trafficbroker-mandy-0.1.2 lib/mapper.rb
trafficbroker-mandy-0.1.3 lib/mapper.rb