-
-
Notifications
You must be signed in to change notification settings - Fork 925
Commit
- 9.4.12.0
- 9.4.11.0
- 9.4.10.0
- 9.4.9.0
- 9.4.8.0
- 9.4.7.0
- 9.4.6.0
- 9.4.5.0
- 9.4.4.0
- 9.4.3.0
- 9.4.2.0
- 9.4.1.0
- 9.4.0.0
- 9.3.15.0
- 9.3.14.0
- 9.3.13.0
- 9.3.12.0
- 9.3.11.0
- 9.3.10.0
- 9.3.9.0
- 9.3.8.0
- 9.3.7.0
- 9.3.6.0
- 9.3.5.0
- 9.3.4.0
- 9.3.3.0
- 9.3.2.0
- 9.3.1.0
- 9.3.0.0
- 9.2.21.0
- 9.2.20.1
- 9.2.20.0
- 9.2.19.0
- 9.2.18.0
- 9.2.17.0
- 9.2.16.0
- 9.2.15.0
- 9.2.14.0
- 9.2.13.0
- 9.2.12.0
- 9.2.11.1
- 9.2.11.0
- 9.2.10.0
- 9.2.9.0
- 9.2.8.0
- 9.2.7.0
- 9.2.6.0
- 9.2.5.0
- 9.2.4.1
- 9.2.4.0
- 9.2.3.0
- 9.2.2.0
- 9.2.1.0
- 9.2.0.0
- 9.1.17.0
- 9.1.16.0
- 9.1.15.0
- 9.1.14.0
- 9.1.13.0
- 9.1.12.0
- 9.1.11.0
- 9.1.10.0
- 9.1.9.0
- 9.1.8.0
- 9.1.7.0
- 9.1.6.0
- 9.1.5.0
- 9.1.4.0
- 9.1.3.0
There are no files selected for viewing
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -36,6 +36,16 @@ | |
class Hash | ||
include Enumerable | ||
|
||
def self.contains_all_internal(one, two) | ||
one.all? do |key, value| | ||
begin | ||
value === two.fetch(key) | ||
rescue KeyError | ||
false | ||
end | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
eregon
Member
|
||
end | ||
end | ||
|
||
def self.new_from_associate_array(associate_array) | ||
hash = new | ||
associate_array.each do |array| | ||
|
@@ -95,6 +105,19 @@ def self._constructor_fallback(*args) | |
# Used internally to get around subclasses redefining #[]= | ||
alias_method :__store__, :[]= | ||
|
||
def <(other) | ||
other = Rubinius::Type.coerce_to(other, Hash, :to_hash) | ||
return false if self.size >= other.size | ||
self.class.contains_all_internal(self, other) | ||
end | ||
|
||
def <=(other) | ||
other = Rubinius::Type.coerce_to(other, Hash, :to_hash) | ||
return false if self.size > other.size | ||
self.class.contains_all_internal(self, other) | ||
end | ||
|
||
|
||
def ==(other) | ||
return true if self.equal? other | ||
unless other.kind_of? Hash | ||
|
@@ -122,6 +145,18 @@ def ==(other) | |
true | ||
end | ||
|
||
def >(other) | ||
other = Rubinius::Type.coerce_to(other, Hash, :to_hash) | ||
return false if self.size <= other.size | ||
self.class.contains_all_internal(other, self) | ||
end | ||
|
||
def >=(other) | ||
other = Rubinius::Type.coerce_to(other, Hash, :to_hash) | ||
return false if self.size < other.size | ||
self.class.contains_all_internal(other, self) | ||
end | ||
|
||
def assoc(key) | ||
each_item { |e| return e.key, e.value if key == e.key } | ||
end | ||
|
It would be better to use
two.key?(key) && value === two[key]
to avoid raising the exception.