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

#<=>(set) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 65

def <=>(set)
  original = persistend_dmnd_workaround_original_spaceship(set)
  return original if original

  return unless set.is_a?(::Set)
  case size <=> set.size
  when -1 then -1 if proper_subset?(set)
  when +1 then +1 if proper_superset?(set)
  else 0 if self.==(set)
  end
end

#==(other) ⇒ Object



78
79
80
81
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 78

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)


122
123
124
125
126
127
128
129
130
131
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 122

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



151
152
153
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 151

def flatten
  self.class.new.flatten_merge(self)
end

#flatten!Object



155
156
157
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 155

def flatten!
  replace(flatten()) if any? { |o| o.is_a?(::Set) }
end

#flatten_merge(set, seen = ::Set.new) ⇒ Object



133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 133

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)


111
112
113
114
115
116
117
118
119
120
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 111

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

#persistend_dmnd_workaround_original_spaceshipObject



60
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 60

alias persistend_dmnd_workaround_original_spaceship <=>

#persistent_dmnd_workaround_original_disjoint?Object



56
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 56

alias persistent_dmnd_workaround_original_disjoint? disjoint?

#persistent_dmnd_workaround_original_equalObject

Save existing Set methods



50
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 50

alias persistent_dmnd_workaround_original_equal ==

#persistent_dmnd_workaround_original_flattenObject



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!Object



59
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 59

alias persistent_dmnd_workaround_original_flatten! flatten!

#persistent_dmnd_workaround_original_flatten_mergeObject



57
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 57

alias persistent_dmnd_workaround_original_flatten_merge flatten_merge

#persistent_dmnd_workaround_original_intersect?Object



55
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 55

alias persistent_dmnd_workaround_original_intersect? intersect?

#persistent_dmnd_workaround_original_proper_subset?Object



54
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 54

alias persistent_dmnd_workaround_original_proper_subset? proper_subset?

#persistent_dmnd_workaround_original_proper_superset?Object



52
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 52

alias persistent_dmnd_workaround_original_proper_superset? proper_superset?

#persistent_dmnd_workaround_original_subset?Object



53
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 53

alias persistent_dmnd_workaround_original_subset? subset?

#persistent_dmnd_workaround_original_superset?Object



51
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 51

alias persistent_dmnd_workaround_original_superset? superset?

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

Returns:

  • (Boolean)


104
105
106
107
108
109
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 104

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)


90
91
92
93
94
95
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 90

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)


97
98
99
100
101
102
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 97

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)


83
84
85
86
87
88
# File 'lib/persistent_dmnd/jruby_9_2_set_workaround.rb', line 83

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