Sha256: b14f4b4c6164af988ca069b02e09974a166d7889ebcccd66b1ff543ea09551f7

Contents?: true

Size: 821 Bytes

Versions: 5

Compression:

Stored size: 821 Bytes

Contents

#--
# Copyright (c) 2010-2012 Engine Yard, Inc.
# Copyright (c) 2007-2009 Sun Microsystems, Inc.
# This source code is available under the MIT license.
# See the file LICENSE.txt for details.
#++

module Warbler
  # A set of gems. This only exists to allow expected operations
  # to be used to add gems, and for backwards compatibility.
  # It would be easier to just use a hash.
  class Gems < Hash
    ANY_VERSION = nil

    def initialize(gems = nil)
      if gems.is_a?(Hash)
        self.merge!(gems)
      elsif gems.is_a?(Array)
        gems.each {|gem| self << gem }
      end
    end

    def <<(gem)
      self[gem] ||= ANY_VERSION
    end

    def +(other)
      other.each {|g| self[g] ||= ANY_VERSION }
      self
    end

    def -(other)
      other.each {|g| self.delete(g)}
      self
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
warbler-1.3.8 lib/warbler/gems.rb
warbler-1.3.7 lib/warbler/gems.rb
warbler-1.3.6 lib/warbler/gems.rb
warbler-1.3.5 lib/warbler/gems.rb
warbler-1.3.4 lib/warbler/gems.rb