summaryrefslogtreecommitdiffstats
path: root/debian/vendor-h2o/deps/mruby/mrblib/hash.rb
diff options
context:
space:
mode:
Diffstat (limited to 'debian/vendor-h2o/deps/mruby/mrblib/hash.rb')
-rw-r--r--debian/vendor-h2o/deps/mruby/mrblib/hash.rb358
1 files changed, 0 insertions, 358 deletions
diff --git a/debian/vendor-h2o/deps/mruby/mrblib/hash.rb b/debian/vendor-h2o/deps/mruby/mrblib/hash.rb
deleted file mode 100644
index 6b4803c..0000000
--- a/debian/vendor-h2o/deps/mruby/mrblib/hash.rb
+++ /dev/null
@@ -1,358 +0,0 @@
-##
-# Hash
-#
-# ISO 15.2.13
-class Hash
- ##
- # Equality---Two hashes are equal if they each contain the same number
- # of keys and if each key-value pair is equal to (according to
- # <code>Object#==</code>) the corresponding elements in the other
- # hash.
- #
- # ISO 15.2.13.4.1
- def ==(hash)
- return true if self.equal?(hash)
- begin
- hash = hash.to_hash
- rescue NoMethodError
- return false
- end
- return false if self.size != hash.size
- self.each do |k,v|
- return false unless hash.key?(k)
- return false unless self[k] == hash[k]
- end
- return true
- end
-
- ##
- # Returns <code>true</code> if <i>hash</i> and <i>other</i> are
- # both hashes with the same content compared by eql?.
- #
- # ISO 15.2.13.4.32 (x)
- def eql?(hash)
- return true if self.equal?(hash)
- begin
- hash = hash.to_hash
- rescue NoMethodError
- return false
- end
- return false if self.size != hash.size
- self.each do |k,v|
- return false unless hash.key?(k)
- return false unless self[k].eql?(hash[k])
- end
- return true
- end
-
- ##
- # Delete the element with the key +key+.
- # Return the value of the element if +key+
- # was found. Return nil if nothing was
- # found. If a block is given, call the
- # block with the value of the element.
- #
- # ISO 15.2.13.4.8
- def delete(key, &block)
- if block && !self.has_key?(key)
- block.call(key)
- else
- self.__delete(key)
- end
- end
-
- ##
- # Calls the given block for each element of +self+
- # and pass the key and value of each element.
- #
- # call-seq:
- # hsh.each {| key, value | block } -> hsh
- # hsh.each_pair {| key, value | block } -> hsh
- # hsh.each -> an_enumerator
- # hsh.each_pair -> an_enumerator
- #
- #
- # If no block is given, an enumerator is returned instead.
- #
- # h = { "a" => 100, "b" => 200 }
- # h.each {|key, value| puts "#{key} is #{value}" }
- #
- # <em>produces:</em>
- #
- # a is 100
- # b is 200
- #
- # ISO 15.2.13.4.9
- def each(&block)
- return to_enum :each unless block
-
- keys = self.keys
- vals = self.values
- len = self.size
- i = 0
- while i < len
- block.call [keys[i], vals[i]]
- i += 1
- end
- self
- end
-
- ##
- # Calls the given block for each element of +self+
- # and pass the key of each element.
- #
- # call-seq:
- # hsh.each_key {| key | block } -> hsh
- # hsh.each_key -> an_enumerator
- #
- # If no block is given, an enumerator is returned instead.
- #
- # h = { "a" => 100, "b" => 200 }
- # h.each_key {|key| puts key }
- #
- # <em>produces:</em>
- #
- # a
- # b
- #
- # ISO 15.2.13.4.10
- def each_key(&block)
- return to_enum :each_key unless block
-
- self.keys.each{|k| block.call(k)}
- self
- end
-
- ##
- # Calls the given block for each element of +self+
- # and pass the value of each element.
- #
- # call-seq:
- # hsh.each_value {| value | block } -> hsh
- # hsh.each_value -> an_enumerator
- #
- # If no block is given, an enumerator is returned instead.
- #
- # h = { "a" => 100, "b" => 200 }
- # h.each_value {|value| puts value }
- #
- # <em>produces:</em>
- #
- # 100
- # 200
- #
- # ISO 15.2.13.4.11
- def each_value(&block)
- return to_enum :each_value unless block
-
- self.keys.each{|k| block.call(self[k])}
- self
- end
-
- ##
- # Replaces the contents of <i>hsh</i> with the contents of other hash
- #
- # ISO 15.2.13.4.23
- def replace(hash)
- raise TypeError, "can't convert argument into Hash" unless hash.respond_to?(:to_hash)
- self.clear
- hash = hash.to_hash
- hash.each_key{|k|
- self[k] = hash[k]
- }
- if hash.default_proc
- self.default_proc = hash.default_proc
- else
- self.default = hash.default
- end
- self
- end
- # ISO 15.2.13.4.17
- alias initialize_copy replace
-
- ##
- # Return a hash which contains the content of
- # +self+ and +other+. If a block is given
- # it will be called for each element with
- # a duplicate key. The value of the block
- # will be the final value of this element.
- #
- # ISO 15.2.13.4.22
- def merge(other, &block)
- h = {}
- raise TypeError, "can't convert argument into Hash" unless other.respond_to?(:to_hash)
- other = other.to_hash
- self.each_key{|k| h[k] = self[k]}
- if block
- other.each_key{|k|
- h[k] = (self.has_key?(k))? block.call(k, self[k], other[k]): other[k]
- }
- else
- other.each_key{|k| h[k] = other[k]}
- end
- h
- end
-
- # internal method for Hash inspection
- def _inspect
- return "{}" if self.size == 0
- "{"+self.map {|k,v|
- k._inspect + "=>" + v._inspect
- }.join(", ")+"}"
- end
- ##
- # Return the contents of this hash as a string.
- #
- # ISO 15.2.13.4.30 (x)
- def inspect
- begin
- self._inspect
- rescue SystemStackError
- "{...}"
- end
- end
- # ISO 15.2.13.4.31 (x)
- alias to_s inspect
-
- ##
- # call-seq:
- # hsh.reject! {| key, value | block } -> hsh or nil
- # hsh.reject! -> an_enumerator
- #
- # Equivalent to <code>Hash#delete_if</code>, but returns
- # <code>nil</code> if no changes were made.
- #
- # 1.8/1.9 Hash#reject! returns Hash; ISO says nothing.
- #
- def reject!(&block)
- return to_enum :reject! unless block
-
- keys = []
- self.each{|k,v|
- if block.call([k, v])
- keys.push(k)
- end
- }
- return nil if keys.size == 0
- keys.each{|k|
- self.delete(k)
- }
- self
- end
-
- ##
- # call-seq:
- # hsh.reject {|key, value| block} -> a_hash
- # hsh.reject -> an_enumerator
- #
- # Returns a new hash consisting of entries for which the block returns false.
- #
- # If no block is given, an enumerator is returned instead.
- #
- # h = { "a" => 100, "b" => 200, "c" => 300 }
- # h.reject {|k,v| k < "b"} #=> {"b" => 200, "c" => 300}
- # h.reject {|k,v| v > 100} #=> {"a" => 100}
- #
- # 1.8/1.9 Hash#reject returns Hash; ISO says nothing.
- #
- def reject(&block)
- return to_enum :reject unless block
-
- h = {}
- self.each{|k,v|
- unless block.call([k, v])
- h[k] = v
- end
- }
- h
- end
-
- ##
- # call-seq:
- # hsh.select! {| key, value | block } -> hsh or nil
- # hsh.select! -> an_enumerator
- #
- # Equivalent to <code>Hash#keep_if</code>, but returns
- # <code>nil</code> if no changes were made.
- #
- # 1.9 Hash#select! returns Hash; ISO says nothing.
- #
- def select!(&block)
- return to_enum :select! unless block
-
- keys = []
- self.each{|k,v|
- unless block.call([k, v])
- keys.push(k)
- end
- }
- return nil if keys.size == 0
- keys.each{|k|
- self.delete(k)
- }
- self
- end
-
- ##
- # call-seq:
- # hsh.select {|key, value| block} -> a_hash
- # hsh.select -> an_enumerator
- #
- # Returns a new hash consisting of entries for which the block returns true.
- #
- # If no block is given, an enumerator is returned instead.
- #
- # h = { "a" => 100, "b" => 200, "c" => 300 }
- # h.select {|k,v| k > "a"} #=> {"b" => 200, "c" => 300}
- # h.select {|k,v| v < 200} #=> {"a" => 100}
- #
- # 1.9 Hash#select returns Hash; ISO says nothing
- #
- def select(&block)
- return to_enum :select unless block
-
- h = {}
- self.each{|k,v|
- if block.call([k, v])
- h[k] = v
- end
- }
- h
- end
-
- ##
- # call-seq:
- # hsh.rehash -> hsh
- #
- # Rebuilds the hash based on the current hash values for each key. If
- # values of key objects have changed since they were inserted, this
- # method will reindex <i>hsh</i>.
- #
- # h = {"AAA" => "b"}
- # h.keys[0].chop!
- # h #=> {"AA"=>"b"}
- # h["AA"] #=> nil
- # h.rehash #=> {"AA"=>"b"}
- # h["AA"] #=> "b"
- #
- def rehash
- h = {}
- self.each{|k,v|
- h[k] = v
- }
- self.replace(h)
- end
-
- def __update(h)
- h.each_key{|k| self[k] = h[k]}
- self
- end
-end
-
-##
-# Hash is enumerable
-#
-# ISO 15.2.13.3
-class Hash
- include Enumerable
-end