persistent-dmnd 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|