Sha256: ff8cc08ac8aee8755adaebc72e5309243b55df8493673d8b59ac599d269259ff

Contents?: true

Size: 1.1 KB

Versions: 8

Compression:

Stored size: 1.1 KB

Contents

module Alf
  module Engine
    module Cesure
      include Cog

      # (see Cog#each)
      def each(&receiver)
        return to_enum unless block_given?
        dup._each(&receiver)
      end

      protected

      # (see Cog#each)
      def _each(&receiver)
        prev_key = nil
        operand.each do |tuple|
          cur_key = project(tuple)
          if cur_key != prev_key
            flush_cesure(prev_key, receiver) if prev_key
            start_cesure(cur_key, receiver)
            prev_key = cur_key
          end
          accumulate_cesure(tuple, receiver)
        end
        flush_cesure(prev_key, receiver) if prev_key
      end

      # Projects a given tuple and returns it's cesure projection
      def project(tuple)
      end
      
      # Callback fired every time a new block starts
      def start_cesure(key, receiver)
      end

      # Callback fired on each tuple of the current block 
      def accumulate_cesure(tuple, receiver)
      end

      # Callback fired at end of a block
      def flush_cesure(key, receiver)
      end

    end # module Cesure
  end # module Engine
end # module Alf

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
alf-core-0.16.3 lib/alf/engine/support/cesure.rb
alf-core-0.16.2 lib/alf/engine/support/cesure.rb
alf-core-0.16.1 lib/alf/engine/support/cesure.rb
alf-core-0.16.0 lib/alf/engine/support/cesure.rb
alf-core-0.15.0 lib/alf/engine/support/cesure.rb
alf-core-0.14.0 lib/alf-engine/alf/engine/support/cesure.rb
alf-core-0.13.1 lib/alf-engine/alf/engine/cesure.rb
alf-core-0.13.0 lib/alf-engine/alf/engine/cesure.rb