persistent-dmnd 1.0.0 → 1.0.1
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/.ruby-version +1 -1
- data/.travis.yml +3 -2
- data/README.adoc +12 -6
- data/lib/persistent-/360/237/222/216.rb +4 -0
- data/lib/persistent_dmnd/array.rb +4 -0
- data/lib/persistent_dmnd/concurrent_ruby_support.rb +1 -1
- data/lib/persistent_dmnd/dmndifier.rb +1 -1
- data/lib/persistent_dmnd/hash.rb +5 -0
- data/lib/persistent_dmnd/jruby_workaround.rb +3 -4
- data/lib/persistent_dmnd/self_conversion.rb +1 -0
- data/lib/persistent_dmnd/set.rb +3 -0
- data/lib/persistent_dmnd/version.rb +1 -1
- data/persistent-dmnd.gemspec +2 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29dbca88c51d0e49932b3f38fe2e210d39e00f3b976adb1876aa33e086d02576
|
4
|
+
data.tar.gz: cabea99e2afa0b0539b1a18c90569ab76252c9d05cd20fd36c8e9f92bfa1cf9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b11b0d5702ce13aa8ff10fd9181f1211bab465ab02292a2ddb3850d52c407b3d1296c9941d0628dd9e99eb7e2e6533927a8747faf7231bd435c62feed8db227
|
7
|
+
data.tar.gz: d33ffce384b3a2b3814d5ea3ce48ed017d48b0664b0c17bb9f7566ef220ec3769187807c8dd6681e9a2262001eb401ec1636dd4539c0b5b87175ef82f61b0a9d
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.5.
|
1
|
+
ruby-2.5.1
|
data/.travis.yml
CHANGED
@@ -2,7 +2,7 @@ language: ruby
|
|
2
2
|
sudo: false
|
3
3
|
|
4
4
|
rvm:
|
5
|
-
- jruby-9.1.
|
5
|
+
- jruby-9.1.16.0
|
6
6
|
- 2.5
|
7
7
|
- 2.4
|
8
8
|
- jruby-1.7.9
|
@@ -13,6 +13,7 @@ rvm:
|
|
13
13
|
- 2.0.0
|
14
14
|
- jruby-9.0.0.0
|
15
15
|
- jruby-1.7.27
|
16
|
+
- ruby-2.6.0-preview1
|
16
17
|
- ruby-head
|
17
18
|
- jruby-head
|
18
19
|
|
@@ -20,4 +21,4 @@ matrix:
|
|
20
21
|
allow_failures:
|
21
22
|
- rvm: ruby-head
|
22
23
|
- rvm: jruby-head
|
23
|
-
- rvm: 2.
|
24
|
+
- rvm: ruby-2.6.0-preview1
|
data/README.adoc
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
:toclevels: 4
|
5
5
|
:toc-title:
|
6
6
|
|
7
|
-
image:https://travis-ci.org/ivoanjo/persistent-dmnd.svg?branch=master["Build Status", link="https://travis-ci.org/ivoanjo/persistent-dmnd"]
|
7
|
+
// image:https://travis-ci.org/ivoanjo/persistent-dmnd.svg?branch=master["Build Status", link="https://travis-ci.org/ivoanjo/persistent-dmnd"]
|
8
8
|
|
9
9
|
Are you tired of calling `.freeze` on your data structures (or your colleagues forgetting to do so)? +
|
10
10
|
Do you wish Ruby had a literal for creating immutable arrays?
|
@@ -97,7 +97,7 @@ It also (_optionally!_) interoperates with the https://github.com/ruby-concurren
|
|
97
97
|
Underneath the covers, persistent-💎 mostly builds atop the awesome https://github.com/hamstergem/hamster[hamster gem].
|
98
98
|
Big thanks to its equally-awesome authors!
|
99
99
|
|
100
|
-
Persistent-💎 is fully supported and tested on Ruby versions 1.9.3 to 2.
|
100
|
+
Persistent-💎 is fully supported and tested on Ruby versions 1.9.3 to 2.6.0-preview1, and JRuby 1.7 to to 9.1. If we don't support your Ruby, it's probably a Python binary. Keep calm and 💎 away!
|
101
101
|
|
102
102
|
[discrete]
|
103
103
|
== Contents
|
@@ -468,13 +468,19 @@ To open a console with the gem loaded, run `bundle console`.
|
|
468
468
|
|
469
469
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to https://rubygems.org[rubygems.org].
|
470
470
|
|
471
|
+
== Feedback and success stories
|
472
|
+
|
473
|
+
Your feedback is welcome!
|
474
|
+
|
475
|
+
Please leave a comment on https://gitlab.com/ivoanjo/persistent-dmnd/issues/8 and share how persistent-💎 delighted (or disappointed? 😱) you today!
|
476
|
+
|
471
477
|
== Contributing
|
472
478
|
|
473
|
-
Bug reports and pull requests are welcome on
|
479
|
+
Bug reports and pull requests are welcome on GitLab at https://gitlab.com/ivoanjo/persistent-dmnd.
|
474
480
|
|
475
481
|
This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the http://contributor-covenant.org[Contributor Covenant] code of conduct.
|
476
482
|
|
477
|
-
Maintained with 💎❤️ by https://
|
483
|
+
Maintained with 💎❤️ by https://ivoanjo.me/[Ivo Anjo].
|
478
484
|
|
479
485
|
== Thanks
|
480
486
|
|
@@ -488,7 +494,7 @@ The gem is available as open source under the terms of the https://opensource.or
|
|
488
494
|
|
489
495
|
== Code of Conduct
|
490
496
|
|
491
|
-
Everyone interacting in the Persistent-💎 project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the https://
|
497
|
+
Everyone interacting in the Persistent-💎 project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the https://gitlab.com/ivoanjo/persistent-dmnd/blob/master/CODE_OF_CONDUCT.adoc[code of conduct].
|
492
498
|
|
493
499
|
== Interesting links
|
494
500
|
|
@@ -496,4 +502,4 @@ Interested in immutable/persistent data structures? Here are some interesting re
|
|
496
502
|
|
497
503
|
* https://github.com/hamstergem/hamster[hamster gem]
|
498
504
|
* https://github.com/immutable-ruby/immutable-ruby[immmutable-ruby gem]
|
499
|
-
* https://
|
505
|
+
* https://gitlab.com/ivoanjo/persistent-dmnd/issues[Your suggestion here]
|
@@ -61,6 +61,7 @@ module Persistent💎
|
|
61
61
|
def a💎
|
62
62
|
Persistent💎::Array
|
63
63
|
end
|
64
|
+
|
64
65
|
alias_method :aDmnd, :a💎
|
65
66
|
|
66
67
|
# Create a new persistent hash
|
@@ -73,6 +74,7 @@ module Persistent💎
|
|
73
74
|
def h💎
|
74
75
|
Persistent💎::Hash
|
75
76
|
end
|
77
|
+
|
76
78
|
alias_method :hDmnd, :h💎
|
77
79
|
|
78
80
|
# Create a new persistent set
|
@@ -85,6 +87,7 @@ module Persistent💎
|
|
85
87
|
def s💎
|
86
88
|
Persistent💎::Set
|
87
89
|
end
|
90
|
+
|
88
91
|
alias_method :sDmnd, :s💎
|
89
92
|
|
90
93
|
# Pretty syntax to making something persistent
|
@@ -104,6 +107,7 @@ module Persistent💎
|
|
104
107
|
def 💎ify
|
105
108
|
Persistent💎::Dmndifier
|
106
109
|
end
|
110
|
+
|
107
111
|
alias_method :dmndify, :💎ify
|
108
112
|
end
|
109
113
|
|
@@ -62,6 +62,7 @@ module Persistent💎
|
|
62
62
|
ConcurrentRubySupport::ensure_concurrent_ruby_loaded
|
63
63
|
Concurrent::Array.new(self)
|
64
64
|
end
|
65
|
+
|
65
66
|
alias :to_concurrent :to_concurrent_array
|
66
67
|
|
67
68
|
# Return Concurrent::Tuple with contents of Persistent💎::Array
|
@@ -85,16 +86,19 @@ module Persistent💎
|
|
85
86
|
def to_a💎
|
86
87
|
self
|
87
88
|
end
|
89
|
+
|
88
90
|
alias_method :to_aDmnd, :to_a💎
|
89
91
|
|
90
92
|
def to_h💎
|
91
93
|
h💎[self]
|
92
94
|
end
|
95
|
+
|
93
96
|
alias_method :to_hDmnd, :to_h💎
|
94
97
|
|
95
98
|
def to_s💎
|
96
99
|
s💎[*self]
|
97
100
|
end
|
101
|
+
|
98
102
|
alias_method :to_sDmnd, :to_s💎
|
99
103
|
end
|
100
104
|
end
|
@@ -65,7 +65,7 @@ module Persistent💎
|
|
65
65
|
|
66
66
|
def raise_no_concurrent_ruby
|
67
67
|
raise(NotImplementedError,
|
68
|
-
|
68
|
+
'concurrent-ruby gem is not available, please install it in order to use #to_concurrent and #to_concurrent_* methods')
|
69
69
|
end
|
70
70
|
|
71
71
|
# The following methods are only for internal and test usage. Please do not use them :)
|
data/lib/persistent_dmnd/hash.rb
CHANGED
@@ -57,6 +57,7 @@ module Persistent💎
|
|
57
57
|
ConcurrentRubySupport::ensure_concurrent_ruby_loaded
|
58
58
|
Concurrent::Hash[self]
|
59
59
|
end
|
60
|
+
|
60
61
|
alias :to_concurrent :to_concurrent_hash
|
61
62
|
|
62
63
|
# Return Concurrent::Map with contents of Persistent💎::Hash
|
@@ -105,21 +106,25 @@ module Persistent💎
|
|
105
106
|
enum_for(:each💎)
|
106
107
|
end
|
107
108
|
end
|
109
|
+
|
108
110
|
alias_method :eachDmnd, :each💎
|
109
111
|
|
110
112
|
def to_a💎
|
111
113
|
a💎[*each💎]
|
112
114
|
end
|
115
|
+
|
113
116
|
alias_method :to_aDmnd, :to_a💎
|
114
117
|
|
115
118
|
def to_h💎
|
116
119
|
self
|
117
120
|
end
|
121
|
+
|
118
122
|
alias_method :to_hDmnd, :to_h💎
|
119
123
|
|
120
124
|
def to_s💎
|
121
125
|
s💎[*each💎]
|
122
126
|
end
|
127
|
+
|
123
128
|
alias_method :to_sDmnd, :to_s💎
|
124
129
|
end
|
125
130
|
end
|
@@ -32,7 +32,6 @@
|
|
32
32
|
module Persistent💎
|
33
33
|
module JRubyWorkaround
|
34
34
|
if RUBY_PLATFORM == 'java' # Only supposed to do something on JRuby
|
35
|
-
|
36
35
|
BROKEN_ENCODING = "\x00"
|
37
36
|
private_constant :BROKEN_ENCODING
|
38
37
|
|
@@ -58,7 +57,7 @@ module Persistent💎
|
|
58
57
|
|
59
58
|
# Workaround JRuby encoding bug
|
60
59
|
# See https://github.com/jruby/jruby/issues/4878
|
61
|
-
# and https://
|
60
|
+
# and https://gitlab.com/ivoanjo/persistent-dmnd/issues/5
|
62
61
|
#
|
63
62
|
# The trick here is that on JRuby, methods with emojis in the name are defined, but the resulting name is mangled
|
64
63
|
# so instead of for instance #to_💎 the result is #to_?\x00. (Or #💎ify will become #?ify\x00.) This behavior is
|
@@ -83,8 +82,8 @@ module Persistent💎
|
|
83
82
|
|
84
83
|
if JRUBY_VERSION.start_with?('1.7.')
|
85
84
|
unless name_string.match(/\?.+/) ||
|
86
|
-
|
87
|
-
|
85
|
+
['a?', 'h?', 's?', 'each?'].include?(name_string) ||
|
86
|
+
['_?', '_a?', '_h?', '_s?'].any? { |suffix| name_string.end_with?(suffix) }
|
88
87
|
return
|
89
88
|
end
|
90
89
|
else
|
data/lib/persistent_dmnd/set.rb
CHANGED
@@ -71,16 +71,19 @@ module Persistent💎
|
|
71
71
|
def to_a💎
|
72
72
|
a💎[*self]
|
73
73
|
end
|
74
|
+
|
74
75
|
alias_method :to_aDmnd, :to_a💎
|
75
76
|
|
76
77
|
def to_h💎
|
77
78
|
h💎[self]
|
78
79
|
end
|
80
|
+
|
79
81
|
alias_method :to_hDmnd, :to_h💎
|
80
82
|
|
81
83
|
def to_s💎
|
82
84
|
self
|
83
85
|
end
|
86
|
+
|
84
87
|
alias_method :to_sDmnd, :to_s💎
|
85
88
|
|
86
89
|
private
|
data/persistent-dmnd.gemspec
CHANGED
@@ -41,7 +41,7 @@ Gem::Specification.new do |spec|
|
|
41
41
|
|
42
42
|
spec.summary = 'Persistent-💎: Because Immutable Data Is Forever'
|
43
43
|
spec.description = 'A tiny ruby gem that gives you a beautiful short-hand syntax for creating immutable arrays, hashes and sets'
|
44
|
-
spec.homepage = 'https://
|
44
|
+
spec.homepage = 'https://gitlab.com/ivoanjo/persistent-dmnd/'
|
45
45
|
spec.license = 'MIT'
|
46
46
|
|
47
47
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
@@ -55,6 +55,7 @@ Gem::Specification.new do |spec|
|
|
55
55
|
spec.add_development_dependency 'rake', '~> 12.2'
|
56
56
|
spec.add_development_dependency 'rspec', '~> 3.7'
|
57
57
|
spec.add_development_dependency 'concurrent-ruby', '~> 1.0'
|
58
|
+
spec.add_development_dependency 'rufo', '~> 0.2'
|
58
59
|
spec.add_development_dependency 'pry'
|
59
60
|
spec.add_development_dependency 'pry-byebug' unless RUBY_PLATFORM == 'java' || RUBY_VERSION.start_with?('1.9.')
|
60
61
|
spec.add_development_dependency 'pry-debugger-jruby' if RUBY_PLATFORM == 'java' && !JRUBY_VERSION.start_with?('1.7.')
|
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: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivo Anjo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rufo
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.2'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.2'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: pry
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,7 +156,7 @@ files:
|
|
142
156
|
- lib/persistent_dmnd/set.rb
|
143
157
|
- lib/persistent_dmnd/version.rb
|
144
158
|
- persistent-dmnd.gemspec
|
145
|
-
homepage: https://
|
159
|
+
homepage: https://gitlab.com/ivoanjo/persistent-dmnd/
|
146
160
|
licenses:
|
147
161
|
- MIT
|
148
162
|
metadata: {}
|
@@ -162,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
176
|
version: '0'
|
163
177
|
requirements: []
|
164
178
|
rubyforge_project:
|
165
|
-
rubygems_version: 2.7.
|
179
|
+
rubygems_version: 2.7.6
|
166
180
|
signing_key:
|
167
181
|
specification_version: 4
|
168
182
|
summary: "Persistent-\U0001F48E: Because Immutable Data Is Forever"
|