Sha256: 26668686b3654250bca1a5370d8fdf1a13e3fa567f49dc9c08e6684b9e4f727d

Contents?: true

Size: 1.01 KB

Versions: 7

Compression:

Stored size: 1.01 KB

Contents

module Cascadence

  module ClassMethods
    # Yes, I realize this is confusing
    # I'm sorry for code-gulfing
    # TODO: Write this class so we don't depend so heavily
    # on recusion and "lazy evaluation" to get the ordering.
    # This is probably 100% necessary if this project were
    # ever to get big and require junk
    def cascadence_order
      @cascadence_order ||= []
      @forked_position ||= []
      @merge_position ||= []
      unless @cascadence_order.nil?
        Helper.generate_tributary(@cascadence_order.reverse, @forked_position.clone, @merge_position.clone)
      end
    end

    def cascading_order( *order )
      @cascadence_order ||= []
      @cascadence_order << order
    end    

    def fork_after( location )
      @forked_position ||= []
      index = cascadence_order.index location
      @forked_position << (index + 1)
    end

    def merge_before( location )
      @merge_position ||= []
      index = cascadence_order.index location
      @merge_position << (index - 1)
    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
cascadence-0.2.4 lib/cascadence/class_methods.rb
cascadence-0.2.3 lib/cascadence/class_methods.rb
cascadence-0.2.2 lib/cascadence/class_methods.rb
cascadence-0.2.1 lib/cascadence/class_methods.rb
cascadence-0.2.0 lib/cascadence/class_methods.rb
cascadence-0.1.2 lib/cascadence/class_methods.rb
cascadence-0.1.1 lib/cascadence/class_methods.rb