Class: Set
- Inherits:
-
Object
- Object
- Set
- Defined in:
- lib/persistent_dmnd/jruby_9_2_set_workaround.rb
Instance Method Summary collapse
-
#==(other) ⇒ Object
Redefine all set methods that use instanceof RubySet to restore previous behavior.
- #disjoint?(set) ⇒ Boolean
- #flatten ⇒ Object
- #flatten! ⇒ Object
- #flatten_merge(set, seen = ::Set.new) ⇒ Object
- #intersect?(set) ⇒ Boolean
- #persistent_dmnd_workaround_original_disjoint? ⇒ Object
-
#persistent_dmnd_workaround_original_equal ⇒ Object
Save existing Set methods.
- #persistent_dmnd_workaround_original_flatten ⇒ Object
- #persistent_dmnd_workaround_original_flatten! ⇒ Object
- #persistent_dmnd_workaround_original_flatten_merge ⇒ Object
- #persistent_dmnd_workaround_original_intersect? ⇒ Object
- #persistent_dmnd_workaround_original_proper_subset? ⇒ Object
- #persistent_dmnd_workaround_original_proper_superset? ⇒ Object
- #persistent_dmnd_workaround_original_subset? ⇒ Object
- #persistent_dmnd_workaround_original_superset? ⇒ Object
- #proper_subset?(set) ⇒ Boolean (also: #<)
- #proper_superset?(set) ⇒ Boolean (also: #>)
- #subset?(set) ⇒ Boolean (also: #<=)
- #superset?(set) ⇒ Boolean (also: #>=)
Instance Method Details
#==(other) ⇒ Object
Redefine all set methods that use instanceof RubySet to restore previous behavior
62 63 64 65 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 62 def ==(other) persistent_dmnd_workaround_original_equal(other) || (other.is_a?(::Set) && size == other.size && other.all? { |o| include?(o) }) end |
#disjoint?(set) ⇒ Boolean
106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 106 def disjoint?(set) persistent_dmnd_workaround_original_disjoint?(set) rescue ArgumentError => e raise unless e. == "value must be a set" && set.is_a?(::Set) !( if size < set.size any? { |o| set.include?(o) } else set.any? { |o| include?(o) } end ) end |
#flatten ⇒ Object
137 138 139 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 137 def flatten self.class.new.flatten_merge(self) end |
#flatten! ⇒ Object
141 142 143 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 141 def flatten! replace(flatten()) if any? { |o| o.is_a?(::Set) } end |
#flatten_merge(set, seen = ::Set.new) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 119 def flatten_merge(set, seen = ::Set.new) set.each do |o| if o.is_a?(::Set) if seen.include?(o_id = o.object_id) raise ArgumentError, "tried to flatten recursive Set" end seen.add(o_id) flatten_merge(o, seen) seen.delete(o_id) else add(o) end end self end |
#intersect?(set) ⇒ Boolean
95 96 97 98 99 100 101 102 103 104 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 95 def intersect?(set) persistent_dmnd_workaround_original_intersect?(set) rescue ArgumentError => e raise unless e. == "value must be a set" && set.is_a?(::Set) if size < set.size any? { |o| set.include?(o) } else set.any? { |o| include?(o) } end end |
#persistent_dmnd_workaround_original_disjoint? ⇒ Object
55 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 55 alias persistent_dmnd_workaround_original_disjoint? disjoint? |
#persistent_dmnd_workaround_original_equal ⇒ Object
Save existing Set methods
49 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 49 alias persistent_dmnd_workaround_original_equal == |
#persistent_dmnd_workaround_original_flatten ⇒ Object
57 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 57 alias persistent_dmnd_workaround_original_flatten flatten |
#persistent_dmnd_workaround_original_flatten! ⇒ Object
58 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 58 alias persistent_dmnd_workaround_original_flatten! flatten! |
#persistent_dmnd_workaround_original_flatten_merge ⇒ Object
56 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 56 alias persistent_dmnd_workaround_original_flatten_merge flatten_merge |
#persistent_dmnd_workaround_original_intersect? ⇒ Object
54 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 54 alias persistent_dmnd_workaround_original_intersect? intersect? |
#persistent_dmnd_workaround_original_proper_subset? ⇒ Object
53 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 53 alias persistent_dmnd_workaround_original_proper_subset? proper_subset? |
#persistent_dmnd_workaround_original_proper_superset? ⇒ Object
51 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 51 alias persistent_dmnd_workaround_original_proper_superset? proper_superset? |
#persistent_dmnd_workaround_original_subset? ⇒ Object
52 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 52 alias persistent_dmnd_workaround_original_subset? subset? |
#persistent_dmnd_workaround_original_superset? ⇒ Object
50 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 50 alias persistent_dmnd_workaround_original_superset? superset? |
#proper_subset?(set) ⇒ Boolean Also known as: <
88 89 90 91 92 93 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 88 def proper_subset?(set) persistent_dmnd_workaround_original_proper_subset?(set) rescue ArgumentError => e raise unless e. == "value must be a set" && set.is_a?(::Set) size < set.size && all? { |o| set.include?(o) } end |
#proper_superset?(set) ⇒ Boolean Also known as: >
74 75 76 77 78 79 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 74 def proper_superset?(set) persistent_dmnd_workaround_original_proper_superset?(set) rescue ArgumentError => e raise unless e. == "value must be a set" && set.is_a?(::Set) size > set.size && set.all? { |o| include?(o) } end |
#subset?(set) ⇒ Boolean Also known as: <=
81 82 83 84 85 86 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 81 def subset?(set) persistent_dmnd_workaround_original_subset?(set) rescue ArgumentError => e raise unless e. == "value must be a set" && set.is_a?(::Set) size <= set.size && all? { |o| set.include?(o) } end |
#superset?(set) ⇒ Boolean Also known as: >=
67 68 69 70 71 72 |
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 67 def superset?(set) persistent_dmnd_workaround_original_superset?(set) rescue ArgumentError => e raise unless e. == "value must be a set" && set.is_a?(::Set) size >= set.size && set.all? { |o| include?(o) } end |