persistent-dmnd 2.0.5 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +54 -137
- data/.standard.yml +4 -0
- data/CODE_OF_CONDUCT.adoc +99 -45
- data/README.adoc +1 -1
- data/Rakefile +4 -3
- data/lib/persistent_dmnd/array.rb +3 -3
- data/lib/persistent_dmnd/concurrent_ruby_support.rb +1 -1
- data/lib/persistent_dmnd/dmndifier.rb +10 -11
- data/lib/persistent_dmnd/everywhere.rb +1 -1
- data/lib/persistent_dmnd/hash.rb +3 -3
- data/lib/persistent_dmnd/jruby_9_2_set_workaround.rb +31 -28
- data/lib/persistent_dmnd/jruby_workaround.rb +3 -3
- data/lib/persistent_dmnd/set.rb +7 -5
- data/lib/persistent_dmnd/version.rb +1 -1
- data/persistent-dmnd.gemspec +1 -5
- metadata +6 -42
- data/.ruby-version +0 -1
- data/sorbet/config +0 -2
- data/sorbet/rbi/gems/concurrent-ruby.rbi +0 -1660
- data/sorbet/rbi/gems/hamster.rbi +0 -683
- data/sorbet/rbi/hidden-definitions/errors.txt +0 -2552
- data/sorbet/rbi/hidden-definitions/hidden.rbi +0 -4180
- data/sorbet/rbi/sorbet-typed/lib/rake/all/rake.rbi +0 -645
- data/sorbet/rbi/sorbet-typed/lib/rspec-core/all/rspec-core.rbi +0 -1891
- data/sorbet/rbi/todo.rbi +0 -10
|
@@ -41,31 +41,30 @@ module Persistent💎
|
|
|
41
41
|
DEFAULT_OPTIONS = {
|
|
42
42
|
on_unknown: proc { |arg|
|
|
43
43
|
raise ArgumentError, "Could not 💎ify an object of class #{arg.class}. Maybe you need to implement :to_💎?"
|
|
44
|
-
}
|
|
44
|
+
}
|
|
45
45
|
}.freeze
|
|
46
46
|
|
|
47
47
|
private_constant :DEFAULT_OPTIONS
|
|
48
48
|
|
|
49
49
|
def self.[](arg, options = DEFAULT_OPTIONS)
|
|
50
50
|
options = DEFAULT_OPTIONS.merge(options)
|
|
51
|
-
|
|
52
|
-
when arg.respond_to?(:to_💎)
|
|
51
|
+
if arg.respond_to?(:to_💎)
|
|
53
52
|
arg.to_💎
|
|
54
|
-
|
|
53
|
+
elsif arg.respond_to?(:to_dmnd)
|
|
55
54
|
arg.to_dmnd
|
|
56
|
-
|
|
55
|
+
elsif arg.respond_to?(:to_hash)
|
|
57
56
|
h💎[arg.to_hash]
|
|
58
|
-
|
|
57
|
+
elsif arg.is_a?(Hamster::Set) || arg.is_a?(Hamster::SortedSet)
|
|
59
58
|
s💎[*arg.to_a]
|
|
60
|
-
|
|
59
|
+
elsif arg.respond_to?(:to_ary)
|
|
61
60
|
a💎[*arg.to_ary]
|
|
62
|
-
|
|
61
|
+
elsif defined?(Concurrent::Tuple) && arg.is_a?(Concurrent::Tuple)
|
|
63
62
|
a💎[*arg.to_a]
|
|
64
|
-
|
|
63
|
+
elsif arg.respond_to?(:to_set)
|
|
65
64
|
s💎[*arg.to_set.to_a]
|
|
66
|
-
|
|
65
|
+
elsif defined?(Concurrent::Map) && arg.is_a?(Concurrent::Map)
|
|
67
66
|
h💎[Persistent💎::Ruby19And20Support.enumerable_to_h(arg.enum_for(:each_pair))]
|
|
68
|
-
|
|
67
|
+
elsif arg.respond_to?(:each_pair)
|
|
69
68
|
h💎[Persistent💎::Ruby19And20Support.enumerable_to_h(arg.each_pair)]
|
|
70
69
|
else
|
|
71
70
|
options.fetch(:on_unknown).call(arg)
|
data/lib/persistent_dmnd/hash.rb
CHANGED
|
@@ -55,11 +55,11 @@ module Persistent💎
|
|
|
55
55
|
# my_concurrent_hash = my_hash.to_concurrent_hash
|
|
56
56
|
#
|
|
57
57
|
def to_concurrent_hash
|
|
58
|
-
ConcurrentRubySupport
|
|
58
|
+
ConcurrentRubySupport.ensure_concurrent_ruby_loaded
|
|
59
59
|
Concurrent::Hash[self]
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
alias_method :to_concurrent, :to_concurrent_hash
|
|
63
63
|
|
|
64
64
|
# Return Concurrent::Map with contents of Persistent💎::Hash
|
|
65
65
|
#
|
|
@@ -69,7 +69,7 @@ module Persistent💎
|
|
|
69
69
|
# # => #<Concurrent::Map:0x0055ad9b283ea0 entries=1 default_proc=nil>
|
|
70
70
|
#
|
|
71
71
|
def to_concurrent_map
|
|
72
|
-
ConcurrentRubySupport
|
|
72
|
+
ConcurrentRubySupport.ensure_concurrent_ruby_loaded
|
|
73
73
|
each_with_object(Concurrent::Map.new(initial_capacity: size)) do |(key, value), result|
|
|
74
74
|
result[key] = value
|
|
75
75
|
end
|
|
@@ -47,30 +47,30 @@ module Persistent💎
|
|
|
47
47
|
class ::Set
|
|
48
48
|
# Save existing Set methods
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
alias_method :persistent_dmnd_workaround_original_equal, :==
|
|
51
|
+
alias_method :persistent_dmnd_workaround_original_superset?, :superset?
|
|
52
|
+
alias_method :persistent_dmnd_workaround_original_proper_superset?, :proper_superset?
|
|
53
|
+
alias_method :persistent_dmnd_workaround_original_subset?, :subset?
|
|
54
|
+
alias_method :persistent_dmnd_workaround_original_proper_subset?, :proper_subset?
|
|
55
|
+
alias_method :persistent_dmnd_workaround_original_intersect?, :intersect?
|
|
56
|
+
alias_method :persistent_dmnd_workaround_original_disjoint?, :disjoint?
|
|
57
|
+
alias_method :persistent_dmnd_workaround_original_flatten_merge, :flatten_merge
|
|
58
|
+
alias_method :persistent_dmnd_workaround_original_flatten, :flatten
|
|
59
|
+
alias_method :persistent_dmnd_workaround_original_flatten!, :flatten!
|
|
60
|
+
alias_method :persistent_dmnd_workaround_original_spaceship, :<=>
|
|
61
61
|
|
|
62
62
|
# Redefine all set methods that use instanceof RubySet to restore previous behavior
|
|
63
63
|
|
|
64
64
|
if JRUBY_VERSION.start_with?("9.4.")
|
|
65
|
-
def <=>(
|
|
66
|
-
original =
|
|
65
|
+
def <=>(other)
|
|
66
|
+
original = persistent_dmnd_workaround_original_spaceship(other)
|
|
67
67
|
return original if original
|
|
68
68
|
|
|
69
|
-
return unless
|
|
70
|
-
case size <=>
|
|
71
|
-
when -1 then -1 if proper_subset?(
|
|
72
|
-
when +1 then +1 if proper_superset?(
|
|
73
|
-
else 0 if self.==(
|
|
69
|
+
return unless other.is_a?(::Set)
|
|
70
|
+
case size <=> other.size
|
|
71
|
+
when -1 then -1 if proper_subset?(other)
|
|
72
|
+
when +1 then +1 if proper_superset?(other)
|
|
73
|
+
else 0 if self.==(other)
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
end
|
|
@@ -123,11 +123,14 @@ module Persistent💎
|
|
|
123
123
|
persistent_dmnd_workaround_original_disjoint?(set)
|
|
124
124
|
rescue ArgumentError => e
|
|
125
125
|
raise unless e.message == "value must be a set" && set.is_a?(::Set)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
126
|
+
|
|
127
|
+
!(
|
|
128
|
+
if size < set.size
|
|
129
|
+
any? { |o| set.include?(o) }
|
|
130
|
+
else
|
|
131
|
+
set.any? { |o| include?(o) }
|
|
132
|
+
end
|
|
133
|
+
)
|
|
131
134
|
end
|
|
132
135
|
|
|
133
136
|
def flatten_merge(set, seen = ::Set.new)
|
|
@@ -153,15 +156,15 @@ module Persistent💎
|
|
|
153
156
|
end
|
|
154
157
|
|
|
155
158
|
def flatten!
|
|
156
|
-
replace(flatten
|
|
159
|
+
replace(flatten) if any? { |o| o.is_a?(::Set) }
|
|
157
160
|
end
|
|
158
161
|
|
|
159
162
|
# Reset aliases to point to redefined methods (otherwise they would keep on pointing to the old variants)
|
|
160
163
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
164
|
+
alias_method :>=, :superset?
|
|
165
|
+
alias_method :>, :proper_superset?
|
|
166
|
+
alias_method :<=, :subset?
|
|
167
|
+
alias_method :<, :proper_subset?
|
|
165
168
|
end
|
|
166
169
|
end
|
|
167
170
|
end
|
|
@@ -51,7 +51,7 @@ module Persistent💎
|
|
|
51
51
|
|
|
52
52
|
def singleton_method_added(name)
|
|
53
53
|
super
|
|
54
|
-
maybe_fix_broken_encoding(name,
|
|
54
|
+
maybe_fix_broken_encoding(name, singleton_class)
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
private
|
|
@@ -83,8 +83,8 @@ module Persistent💎
|
|
|
83
83
|
|
|
84
84
|
if JRUBY_VERSION.start_with?("1.7.")
|
|
85
85
|
unless name_string.match(/\?.+/) ||
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
["a?", "h?", "s?", "each?"].include?(name_string) ||
|
|
87
|
+
["_?", "_a?", "_h?", "_s?"].any? { |suffix| name_string.end_with?(suffix) }
|
|
88
88
|
return
|
|
89
89
|
end
|
|
90
90
|
else
|
data/lib/persistent_dmnd/set.rb
CHANGED
|
@@ -69,10 +69,10 @@ module Persistent💎
|
|
|
69
69
|
# see also https://rubyreferences.github.io/rubychanges/3.0.html#standard-library for details
|
|
70
70
|
def <=>(other)
|
|
71
71
|
case size <=> other.size
|
|
72
|
-
when
|
|
73
|
-
|
|
74
|
-
when
|
|
75
|
-
|
|
72
|
+
when -1
|
|
73
|
+
-1 if self < other
|
|
74
|
+
when +1
|
|
75
|
+
+1 if self > other
|
|
76
76
|
else
|
|
77
77
|
0 if self == other
|
|
78
78
|
end
|
|
@@ -96,10 +96,12 @@ module Persistent💎
|
|
|
96
96
|
|
|
97
97
|
alias_method :to_sDmnd, :to_s💎
|
|
98
98
|
|
|
99
|
+
alias_method :===, :include?
|
|
100
|
+
|
|
99
101
|
private
|
|
100
102
|
|
|
101
103
|
def set_eq?(other)
|
|
102
|
-
|
|
104
|
+
size == other.size && other.all? { |item| include?(item) }
|
|
103
105
|
end
|
|
104
106
|
end
|
|
105
107
|
end
|
data/persistent-dmnd.gemspec
CHANGED
|
@@ -55,14 +55,10 @@ Gem::Specification.new do |spec|
|
|
|
55
55
|
spec.add_development_dependency "rake", "~> 12.2" # Note: Rake 12.2 is the last that supports Ruby 1.9
|
|
56
56
|
spec.add_development_dependency "rspec", "~> 3.8"
|
|
57
57
|
spec.add_development_dependency "concurrent-ruby", "~> 1.1"
|
|
58
|
-
spec.add_development_dependency "
|
|
58
|
+
spec.add_development_dependency "standard" if RUBY_VERSION >= "2.6.0"
|
|
59
59
|
spec.add_development_dependency "pry" if RUBY_VERSION >= "2.0.0"
|
|
60
60
|
spec.add_development_dependency "pry-byebug" if RUBY_ENGINE == "ruby" && RUBY_VERSION >= "2.4"
|
|
61
61
|
spec.add_development_dependency "pry-debugger-jruby" if RUBY_ENGINE == "jruby" && !JRUBY_VERSION.start_with?("1.7.")
|
|
62
|
-
unless RUBY_ENGINE == "truffleruby"
|
|
63
|
-
spec.add_development_dependency "sorbet"
|
|
64
|
-
spec.add_development_dependency "spoom", "~> 1.1" if RUBY_VERSION >= "2.3.7"
|
|
65
|
-
end
|
|
66
62
|
|
|
67
63
|
spec.add_dependency "hamster", "~> 3.0"
|
|
68
64
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: persistent-dmnd
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ivo Anjo
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-02-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -53,21 +53,7 @@ dependencies:
|
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '1.1'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0.13'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - "~>"
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0.13'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: pry
|
|
56
|
+
name: standard
|
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
|
72
58
|
requirements:
|
|
73
59
|
- - ">="
|
|
@@ -81,7 +67,7 @@ dependencies:
|
|
|
81
67
|
- !ruby/object:Gem::Version
|
|
82
68
|
version: '0'
|
|
83
69
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: pry
|
|
70
|
+
name: pry
|
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
|
86
72
|
requirements:
|
|
87
73
|
- - ">="
|
|
@@ -95,7 +81,7 @@ dependencies:
|
|
|
95
81
|
- !ruby/object:Gem::Version
|
|
96
82
|
version: '0'
|
|
97
83
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
84
|
+
name: pry-byebug
|
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
|
100
86
|
requirements:
|
|
101
87
|
- - ">="
|
|
@@ -108,20 +94,6 @@ dependencies:
|
|
|
108
94
|
- - ">="
|
|
109
95
|
- !ruby/object:Gem::Version
|
|
110
96
|
version: '0'
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: spoom
|
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
|
114
|
-
requirements:
|
|
115
|
-
- - "~>"
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: '1.1'
|
|
118
|
-
type: :development
|
|
119
|
-
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
requirements:
|
|
122
|
-
- - "~>"
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
version: '1.1'
|
|
125
97
|
- !ruby/object:Gem::Dependency
|
|
126
98
|
name: hamster
|
|
127
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -146,7 +118,7 @@ files:
|
|
|
146
118
|
- ".gitignore"
|
|
147
119
|
- ".gitlab-ci.yml"
|
|
148
120
|
- ".rspec"
|
|
149
|
-
- ".
|
|
121
|
+
- ".standard.yml"
|
|
150
122
|
- CODE_OF_CONDUCT.adoc
|
|
151
123
|
- LICENSE
|
|
152
124
|
- README.adoc
|
|
@@ -171,14 +143,6 @@ files:
|
|
|
171
143
|
- lib/persistent_dmnd/set.rb
|
|
172
144
|
- lib/persistent_dmnd/version.rb
|
|
173
145
|
- persistent-dmnd.gemspec
|
|
174
|
-
- sorbet/config
|
|
175
|
-
- sorbet/rbi/gems/concurrent-ruby.rbi
|
|
176
|
-
- sorbet/rbi/gems/hamster.rbi
|
|
177
|
-
- sorbet/rbi/hidden-definitions/errors.txt
|
|
178
|
-
- sorbet/rbi/hidden-definitions/hidden.rbi
|
|
179
|
-
- sorbet/rbi/sorbet-typed/lib/rake/all/rake.rbi
|
|
180
|
-
- sorbet/rbi/sorbet-typed/lib/rspec-core/all/rspec-core.rbi
|
|
181
|
-
- sorbet/rbi/todo.rbi
|
|
182
146
|
homepage: https://gitlab.com/ivoanjo/persistent-dmnd/
|
|
183
147
|
licenses:
|
|
184
148
|
- MIT
|
data/.ruby-version
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ruby-3.0.2
|
data/sorbet/config
DELETED