class Set

Public Instance Methods

<(set)
Alias for: proper_subset?
<=(set)
Alias for: subset?
==(other) click to toggle source

Redefine all set methods that use instanceof RubySet to restore previous behavior

# File lib/persistent_dmnd/jruby_9_2_set_workaround.rb, line 63
def ==(other)
  persistent_dmnd_workaround_original_equal(other) ||
    (other.is_a?(::Set) && size == other.size && other.all? { |o| include?(o) })
end
>(set)
Alias for: proper_superset?
>=(set)

Reset aliases to point to redefined methods (otherwise they would keep on pointing to the old variants)

Alias for: superset?
disjoint?(set) click to toggle source
# File lib/persistent_dmnd/jruby_9_2_set_workaround.rb, line 107
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
flatten() click to toggle source
# File lib/persistent_dmnd/jruby_9_2_set_workaround.rb, line 138
def flatten
  self.class.new.flatten_merge(self)
end
flatten!() click to toggle source
# File lib/persistent_dmnd/jruby_9_2_set_workaround.rb, line 142
def flatten!
  replace(flatten()) if any? { |o| o.is_a?(::Set) }
end
flatten_merge(set, seen = ::Set.new) click to toggle source
# File lib/persistent_dmnd/jruby_9_2_set_workaround.rb, line 120
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) click to toggle source
# File lib/persistent_dmnd/jruby_9_2_set_workaround.rb, line 96
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?(set)
Alias for: disjoint?
persistent_dmnd_workaround_original_equal(other)

Save existing Set methods

Alias for: ==
persistent_dmnd_workaround_original_flatten()
Alias for: flatten
persistent_dmnd_workaround_original_flatten!()
Alias for: flatten!
persistent_dmnd_workaround_original_flatten_merge(set, seen = ::Set.new)
Alias for: flatten_merge
persistent_dmnd_workaround_original_intersect?(set)
Alias for: intersect?
persistent_dmnd_workaround_original_proper_subset?(set)
Alias for: proper_subset?
persistent_dmnd_workaround_original_proper_superset?(set)
Alias for: proper_superset?
persistent_dmnd_workaround_original_subset?(set)
Alias for: subset?
persistent_dmnd_workaround_original_superset?(set)
Alias for: superset?
proper_subset?(set) click to toggle source
# File lib/persistent_dmnd/jruby_9_2_set_workaround.rb, line 89
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) click to toggle source
# File lib/persistent_dmnd/jruby_9_2_set_workaround.rb, line 75
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) click to toggle source
# File lib/persistent_dmnd/jruby_9_2_set_workaround.rb, line 82
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) click to toggle source
# File lib/persistent_dmnd/jruby_9_2_set_workaround.rb, line 68
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