Sha256: 1abade6e4510bf6c3c327eef9cc4812d4522377c3c1cde7c29ac51f937f281f2

Contents?: true

Size: 1.56 KB

Versions: 30

Compression:

Stored size: 1.56 KB

Contents

module Extlib
  # Simple set implementation
  # on top of Hash with merging support.
  #
  # In particular this is used to store
  # a set of callable actions of controller.
  class SimpleSet < Hash

    ##
    # Create a new SimpleSet containing the unique members of _arr_
    #
    # @param [Array] arr Initial set values.
    #
    # @return [Array] The array the Set was initialized with
    #
    # @api public
    def initialize(arr = [])
      Array(arr).each {|x| self[x] = true}
    end

    ##
    # Add a value to the set, and return it
    #
    # @param [Object] value Value to add to set.
    #
    # @return [SimpleSet] Receiver
    #
    # @api public
    def <<(value)
      self[value] = true
      self
    end

    ##
    # Merge _arr_ with receiver, producing the union of receiver & _arr_
    #
    #   s = Extlib::SimpleSet.new([:a, :b, :c])
    #   s.merge([:c, :d, :e, f])  #=> #<SimpleSet: {:e, :c, :f, :a, :d, :b}>
    #
    # @param [Array] arr Values to merge with set.
    #
    # @return [SimpleSet] The set after the Array was merged in.
    #
    # @api public
    def merge(arr)
      super(arr.inject({}) {|s,x| s[x] = true; s })
    end

    ##
    # Get a human readable version of the set.
    #
    #   s = SimpleSet.new([:a, :b, :c])
    #   s.inspect                 #=> "#<SimpleSet: {:c, :a, :b}>"
    #
    # @return [String] A human readable version of the set.
    #
    # @api public
    def inspect
      "#<SimpleSet: {#{keys.map {|x| x.inspect}.join(", ")}}>"
    end

    # def to_a
    alias_method :to_a, :keys

  end # SimpleSet
end # Merb

Version data entries

30 entries across 29 versions & 7 rubygems

Version Path
extlib-0.9.16 lib/extlib/simple_set.rb
extlib-0.9.15 lib/extlib/simple_set.rb
robsharp-extlib-0.9.15 lib/extlib/simple_set.rb
sundbp-extlib-0.9.14 lib/extlib/simple_set.rb
middleman-0.13.1 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/simple_set.rb
middleman-0.13.1 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/simple_set.rb
middleman-0.12.2 lib/middleman/vendor/gems/gems/extlib-0.9.14/lib/extlib/simple_set.rb
middleman-0.12.1 lib/middleman/vendor/gems/gems/extlib-0.9.14/lib/extlib/simple_set.rb
extlib-0.9.14 lib/extlib/simple_set.rb
ginst-2009.12.8 vendor/gems/extlib-0.9.13/lib/extlib/simple_set.rb
middleman-0.12.0.pre3 lib/middleman/vendor/gems/gems/extlib-0.9.13/lib/extlib/simple_set.rb
middleman-0.12.0.pre2 lib/middleman/vendor/gems/gems/extlib-0.9.13/lib/extlib/simple_set.rb
middleman-0.12.0.pre lib/middleman/vendor/gems/gems/extlib-0.9.13/lib/extlib/simple_set.rb
ginst-2009.11.24 vendor/gems/extlib-0.9.13/lib/extlib/simple_set.rb
ginst-2009.11.23 vendor/gems/extlib-0.9.13/lib/extlib/simple_set.rb
rango-0.0.6 vendor/extlib/lib/extlib/simple_set.rb
rango-0.1.pre vendor/extlib/lib/extlib/simple_set.rb
middleman-0.10.17 vendor/gems/gems/extlib-0.9.13/lib/extlib/simple_set.rb
middleman-0.10.16 vendor/gems/gems/extlib-0.9.13/lib/extlib/simple_set.rb
middleman-0.10.15 vendor/gems/gems/extlib-0.9.13/lib/extlib/simple_set.rb