Sha256: 8a890421ea78d272bed65014e98e06685140ae112b21ff21c3b1fb4aed4a80d7

Contents?: true

Size: 1.07 KB

Versions: 5

Compression:

Stored size: 1.07 KB

Contents

module Mandy
  module Reducers
    class Base < Mandy::Task
      include Mandy::IO::OutputFormatting

      def self.compile(opts={}, &blk)
        Class.new(Mandy::Reducers::Base) do 
          self.class_eval do
            define_method(:reducer, blk) if blk
            define_method(:setup, opts[:setup]) if opts[:setup]
            define_method(:teardown, opts[:teardown]) if opts[:teardown]
          end
        end
      end
    
      def execute
        setup if self.respond_to?(:setup)
        last_key, values = nil, []
        @input.each_line do |line|
           key, value = line.split(KEY_VALUE_SEPERATOR, 2)
           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
        reducer(deserialize_key(last_key), values.map {|v| deserialize_value(v) })
        teardown if self.respond_to?(:teardown)
      end
    
      private
      
      def reducer(key,values)
        #nil
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mandy-0.5.28 lib/mandy/reducers/base_reducer.rb
mandy-0.5.27 lib/mandy/reducers/base_reducer.rb
mandy-0.5.26 lib/mandy/reducers/base_reducer.rb
mandy-0.5.25 lib/mandy/reducers/base_reducer.rb
mandy-0.5.24 lib/mandy/reducers/base_reducer.rb