Class: Set

Inherits:
Object
  • Object
show all
Defined in:
lib/persistent_dmnd/jruby_9_2_set_workaround.rb

Instance Method Summary collapse

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

Returns:

  • (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.message == "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

#flattenObject



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

Returns:

  • (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.message == "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_equalObject

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_flattenObject



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_mergeObject



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: <

Returns:

  • (Boolean)


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.message == "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: >

Returns:

  • (Boolean)


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.message == "value must be a set" && set.is_a?(::Set)
  size > set.size && set.all? { |o| include?(o) }
end

#subset?(set) ⇒ Boolean Also known as: <=

Returns:

  • (Boolean)


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.message == "value must be a set" && set.is_a?(::Set)
  size <= set.size && all? { |o| set.include?(o) }
end

#superset?(set) ⇒ Boolean Also known as: >=

Returns:

  • (Boolean)


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.message == "value must be a set" && set.is_a?(::Set)
  size >= set.size && set.all? { |o| include?(o) }
end