immutable_struct_ex 0.1.1 → 0.2.3
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/.gitignore +1 -0
- data/CHANGELOG.md +19 -1
- data/Gemfile.lock +17 -16
- data/README.md +46 -3
- data/bin/console +1 -0
- data/immutable_struct_ex.gemspec +7 -10
- data/lib/immutable_struct_ex/comparable.rb +18 -0
- data/lib/immutable_struct_ex/immutable.rb +16 -0
- data/lib/immutable_struct_ex/version.rb +1 -1
- data/lib/immutable_struct_ex.rb +6 -21
- metadata +61 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a0a34457a9487fc3f303f5605d59b4b16e31621f7d3a3fdeb6ea3c2cb3df0bb
|
4
|
+
data.tar.gz: d7e39e8460fac3985e54929ef0ceda6dba990468daaceb666094149a784fbd06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d2058c398d2083f608ad57b1b54f9c4a0379a95645a36479bdb02007ef0acfe0560d58576c47bc754dad21830876f027329f163f1326dd3139700967c8aaa0d
|
7
|
+
data.tar.gz: c222c628b6b35c8ef5598c644460246b4f015e754bf5d65cdc3b3dc045e56a0a4fcf0efc5224f2c626ea0d8c41c65eefcde462f35b179ecd4954581f4dc28c3d
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,24 @@
|
|
1
|
+
### 0.2.3
|
2
|
+
* Bug fix
|
3
|
+
* Fix bug in specs that failed to add criteria for passing tests (e.g. ".to eq true/false") so tests could not fail.
|
4
|
+
|
5
|
+
### 0.2.2
|
6
|
+
* Changes
|
7
|
+
* Restructure modules under lib/immutable_structure_ex folder.
|
8
|
+
* Make codez to create struct a little cleaner/tighter.
|
9
|
+
* Ignore .vscode folder in .gitignore file.
|
10
|
+
* Update gems and especially rake gem version to squash CVE-2020-8130, see https://github.com/advisories/GHSA-jppv-gw3r-w3q8.
|
11
|
+
* Fix rubocop violations.
|
12
|
+
|
13
|
+
### 0.2.1
|
14
|
+
* Enhancements
|
15
|
+
* General refactors/cleanup.
|
16
|
+
* Added Immutable module; when extended on a struct, makes it immutable.
|
17
|
+
* Added Comparable module; when extended on a struct, makes it comparable to other structs and hashes.
|
18
|
+
|
1
19
|
### 0.1.1
|
2
20
|
* Enhancements
|
3
|
-
* Added this CHANGELOG.md
|
21
|
+
* Added this CHANGELOG.md.
|
4
22
|
* Bug fix
|
5
23
|
* Equality method #== did not work when comparing objects whose underlying hashes were equal.
|
6
24
|
* Added #== method to compare underlying hashes by calling a.to_h == b.to_h.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
immutable_struct_ex (0.
|
4
|
+
immutable_struct_ex (0.2.3)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -11,6 +11,7 @@ GEM
|
|
11
11
|
coderay (1.1.3)
|
12
12
|
diff-lcs (1.5.0)
|
13
13
|
docile (1.4.0)
|
14
|
+
json (2.6.2)
|
14
15
|
kwalify (0.7.2)
|
15
16
|
method_source (1.0.0)
|
16
17
|
parallel (1.22.1)
|
@@ -23,7 +24,7 @@ GEM
|
|
23
24
|
byebug (~> 11.0)
|
24
25
|
pry (~> 0.13.0)
|
25
26
|
rainbow (3.1.1)
|
26
|
-
rake (
|
27
|
+
rake (13.0.6)
|
27
28
|
reek (6.1.1)
|
28
29
|
kwalify (~> 0.7.0)
|
29
30
|
parser (~> 3.1.0)
|
@@ -43,13 +44,14 @@ GEM
|
|
43
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
44
45
|
rspec-support (~> 3.11.0)
|
45
46
|
rspec-support (3.11.0)
|
46
|
-
rubocop (1.
|
47
|
+
rubocop (1.35.0)
|
48
|
+
json (~> 2.3)
|
47
49
|
parallel (~> 1.10)
|
48
|
-
parser (>= 3.
|
50
|
+
parser (>= 3.1.2.1)
|
49
51
|
rainbow (>= 2.2.2, < 4.0)
|
50
52
|
regexp_parser (>= 1.8, < 3.0)
|
51
|
-
rexml
|
52
|
-
rubocop-ast (>= 1.
|
53
|
+
rexml (>= 3.2.5, < 4.0)
|
54
|
+
rubocop-ast (>= 1.20.1, < 2.0)
|
53
55
|
ruby-progressbar (~> 1.7)
|
54
56
|
unicode-display_width (>= 1.4.0, < 3.0)
|
55
57
|
rubocop-ast (1.21.0)
|
@@ -57,9 +59,8 @@ GEM
|
|
57
59
|
rubocop-performance (1.14.3)
|
58
60
|
rubocop (>= 1.7.0, < 2.0)
|
59
61
|
rubocop-ast (>= 0.4.0)
|
60
|
-
rubocop-rspec (2.
|
61
|
-
rubocop (~> 1.
|
62
|
-
rubocop-ast (>= 1.1.0)
|
62
|
+
rubocop-rspec (2.12.1)
|
63
|
+
rubocop (~> 1.31)
|
63
64
|
ruby-progressbar (1.11.0)
|
64
65
|
simplecov (0.21.2)
|
65
66
|
docile (~> 1.1)
|
@@ -73,15 +74,15 @@ PLATFORMS
|
|
73
74
|
x86_64-darwin-19
|
74
75
|
|
75
76
|
DEPENDENCIES
|
76
|
-
bundler (~> 2.
|
77
|
+
bundler (~> 2.2, >= 2.2.17)
|
77
78
|
immutable_struct_ex!
|
78
79
|
pry-byebug (~> 3.9)
|
79
|
-
rake (~>
|
80
|
-
reek (~> 6.
|
81
|
-
rspec (
|
82
|
-
rubocop (~> 1.
|
83
|
-
rubocop-performance (~> 1.
|
84
|
-
rubocop-rspec (~> 2.
|
80
|
+
rake (~> 13.0, >= 13.0.6)
|
81
|
+
reek (~> 6.1, >= 6.1.1)
|
82
|
+
rspec (>= 3.10)
|
83
|
+
rubocop (~> 1.35)
|
84
|
+
rubocop-performance (~> 1.14, >= 1.14.3)
|
85
|
+
rubocop-rspec (~> 2.12, >= 2.12.1)
|
85
86
|
simplecov (~> 0.21.2)
|
86
87
|
|
87
88
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
[](https://badge.fury.io/gh/gangelo%2Fimmutable_struct_ex)
|
2
|
+
[](https://badge.fury.io/rb/immutable_struct_ex)
|
3
|
+
|
4
|
+
[](http://www.rubydoc.info/gems/immutable_struct_ex/)
|
5
|
+
[](http://www.rubydoc.info/gems/immutable_struct_ex/)
|
6
|
+
|
7
|
+
[](https://github.com/gangelo/immutable_struct_ex/issues)
|
8
|
+
|
9
|
+
[](#license)
|
10
|
+
|
1
11
|
# ImmutableStructEx
|
2
12
|
|
3
13
|
_ImmutableStructEx_ is yet another immutable struct. What makes ImmutableStructEx different, is that it allows you to create immutable structs in one step _by default_. In other words, other immutable struct gems force you to first define the struct, then instantiate the struct object; or, define the struct and instantiate the struct object via chaining. For example:
|
@@ -19,13 +29,13 @@ ImmutableStructEx allows you do this in one step:
|
|
19
29
|
|
20
30
|
```ruby
|
21
31
|
immutable_struct_ex = ImmutableStructEx.new(first: 'John', last: 'Doe', phone: '(201) 230-7281')
|
22
|
-
immutable_struct_ex.first
|
32
|
+
immutable_struct_ex.first
|
23
33
|
#=> 'John'
|
24
34
|
immutable_struct_ex[:first]
|
25
35
|
#=> 'John'
|
26
|
-
immutable_struct_ex.last
|
36
|
+
immutable_struct_ex.last
|
27
37
|
#=> 'Doe'
|
28
|
-
immutable_struct_ex.phone
|
38
|
+
immutable_struct_ex.phone
|
29
39
|
#=> '(201) 230-7281'
|
30
40
|
```
|
31
41
|
### Immutable
|
@@ -50,6 +60,39 @@ immutable_struct_ex.john?
|
|
50
60
|
#=> true
|
51
61
|
```
|
52
62
|
|
63
|
+
### Other Examples
|
64
|
+
```ruby
|
65
|
+
# Redactable, immutable struct
|
66
|
+
user = { username: 'jdoe', password: 'p@55w0rD', ssn: '123-70-9182' }
|
67
|
+
immutable_struct_ex = ImmutableStructEx.new(**user) do
|
68
|
+
REDACT = %i(password ssn).freeze
|
69
|
+
|
70
|
+
def inspect
|
71
|
+
to_s
|
72
|
+
end
|
73
|
+
|
74
|
+
def to_s
|
75
|
+
super.to_s.tap do |string|
|
76
|
+
REDACT.each do |redact|
|
77
|
+
string.gsub!(/( #{Regexp.quote(redact.to_s)}=")(.*?)(")/, '\1[REDACTED]\3')
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def to_h
|
83
|
+
super.to_h.tap do |hash|
|
84
|
+
REDACT.each { |redact| hash[redact] = '[REDACTED]' }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
immutable_struct_ex.inspect
|
90
|
+
#=> "#<struct username=\"jdoe\", password=\"[REDACTED]\", ssn=\"[REDACTED]\">"
|
91
|
+
|
92
|
+
immutable_struct_ex.to_h
|
93
|
+
#=> {:username=>"jdoe", :password=>"[REDACTED]", :ssn=>"[REDACTED]"}
|
94
|
+
```
|
95
|
+
|
53
96
|
## Installation
|
54
97
|
|
55
98
|
Add this line to your application's Gemfile:
|
data/bin/console
CHANGED
data/immutable_struct_ex.gemspec
CHANGED
@@ -32,16 +32,13 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
33
33
|
spec.require_paths = ['lib']
|
34
34
|
|
35
|
+
spec.add_development_dependency 'bundler', '~> 2.2', '>= 2.2.17'
|
35
36
|
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
36
|
-
spec.add_development_dependency 'reek', '~> 6.
|
37
|
-
|
38
|
-
|
39
|
-
spec.add_development_dependency 'rubocop', '~> 1.
|
40
|
-
spec.add_development_dependency 'rubocop-
|
41
|
-
spec.add_development_dependency 'rubocop-rspec', '~> 2.3'
|
37
|
+
spec.add_development_dependency 'reek', '~> 6.1', '>= 6.1.1'
|
38
|
+
spec.add_development_dependency 'rspec', '>= 3.10'
|
39
|
+
spec.add_development_dependency 'rubocop', '~> 1.35'
|
40
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.14', '>= 1.14.3'
|
41
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.12', '>= 2.12.1'
|
42
42
|
spec.add_development_dependency 'simplecov', '~> 0.21.2'
|
43
|
-
|
44
|
-
spec.add_development_dependency 'bundler', '~> 2.3.0'
|
45
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
46
|
-
spec.add_development_dependency 'rspec', '~> 3.0'
|
43
|
+
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
|
47
44
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ImmutableStructEx
|
4
|
+
# Makes a struct comparable with another struct or hash when extended.
|
5
|
+
module Comparable
|
6
|
+
class << self
|
7
|
+
def extended(struct)
|
8
|
+
struct.instance_eval do
|
9
|
+
def ==(other)
|
10
|
+
return false unless other.is_a?(Hash) || other.is_a?(Struct)
|
11
|
+
|
12
|
+
to_h == other.to_h
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ImmutableStructEx
|
4
|
+
# Makes a struct immutable when extended.
|
5
|
+
module Immutable
|
6
|
+
class << self
|
7
|
+
def extended(struct)
|
8
|
+
[:[], *struct.members].each do |method|
|
9
|
+
struct.instance_eval do
|
10
|
+
undef :"#{method}="
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/immutable_struct_ex.rb
CHANGED
@@ -1,34 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'immutable_struct_ex/version'
|
4
|
+
require 'immutable_struct_ex/comparable'
|
5
|
+
require 'immutable_struct_ex/immutable'
|
4
6
|
|
5
7
|
# Defines the methods used to create/manage the ImmutableStructEx struct.
|
6
8
|
module ImmutableStructEx
|
7
9
|
class << self
|
8
10
|
def new(**hash, &block)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
<<~RUBY
|
14
|
-
undef :"#{method}="
|
15
|
-
RUBY
|
16
|
-
end
|
17
|
-
end
|
18
|
-
evaluate(struct) do
|
19
|
-
<<~RUBY
|
20
|
-
def ==(object)
|
21
|
-
return false unless object.respond_to? :to_h
|
22
|
-
|
23
|
-
to_h == object.to_h
|
24
|
-
end
|
25
|
-
RUBY
|
11
|
+
Struct.new(*hash.keys, keyword_init: true, &block).tap do |struct|
|
12
|
+
return struct.new(**hash).tap do |struct_object|
|
13
|
+
struct_object.extend Comparable
|
14
|
+
struct_object.extend Immutable
|
26
15
|
end
|
27
16
|
end
|
28
17
|
end
|
29
|
-
|
30
|
-
def evaluate(struct)
|
31
|
-
struct.instance_eval yield
|
32
|
-
end
|
33
18
|
end
|
34
19
|
end
|
metadata
CHANGED
@@ -1,153 +1,171 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: immutable_struct_ex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gene M. Angelo, Jr.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.2'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.2.17
|
20
23
|
type: :development
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
29
|
+
version: '2.2'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.2.17
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
34
|
+
name: pry-byebug
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 6.0.4
|
39
|
+
version: '3.9'
|
37
40
|
type: :development
|
38
41
|
prerelease: false
|
39
42
|
version_requirements: !ruby/object:Gem::Requirement
|
40
43
|
requirements:
|
41
44
|
- - "~>"
|
42
45
|
- !ruby/object:Gem::Version
|
43
|
-
version: '
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 6.0.4
|
46
|
+
version: '3.9'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
48
|
+
name: reek
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: '6.1'
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 6.1.1
|
54
57
|
type: :development
|
55
58
|
prerelease: false
|
56
59
|
version_requirements: !ruby/object:Gem::Requirement
|
57
60
|
requirements:
|
58
61
|
- - "~>"
|
59
62
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
63
|
+
version: '6.1'
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 6.1.1
|
61
67
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
68
|
+
name: rspec
|
63
69
|
requirement: !ruby/object:Gem::Requirement
|
64
70
|
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '1.11'
|
68
71
|
- - ">="
|
69
72
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
73
|
+
version: '3.10'
|
71
74
|
type: :development
|
72
75
|
prerelease: false
|
73
76
|
version_requirements: !ruby/object:Gem::Requirement
|
74
77
|
requirements:
|
75
|
-
- - "~>"
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '1.11'
|
78
78
|
- - ">="
|
79
79
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
80
|
+
version: '3.10'
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
|
-
name: rubocop
|
82
|
+
name: rubocop
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
84
84
|
requirements:
|
85
85
|
- - "~>"
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version: '
|
87
|
+
version: '1.35'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|
92
92
|
- - "~>"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: '
|
94
|
+
version: '1.35'
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
96
|
+
name: rubocop-performance
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
99
|
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
101
|
+
version: '1.14'
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 1.14.3
|
102
105
|
type: :development
|
103
106
|
prerelease: false
|
104
107
|
version_requirements: !ruby/object:Gem::Requirement
|
105
108
|
requirements:
|
106
109
|
- - "~>"
|
107
110
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
111
|
+
version: '1.14'
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 1.14.3
|
109
115
|
- !ruby/object:Gem::Dependency
|
110
|
-
name:
|
116
|
+
name: rubocop-rspec
|
111
117
|
requirement: !ruby/object:Gem::Requirement
|
112
118
|
requirements:
|
113
119
|
- - "~>"
|
114
120
|
- !ruby/object:Gem::Version
|
115
|
-
version: 2.
|
121
|
+
version: '2.12'
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 2.12.1
|
116
125
|
type: :development
|
117
126
|
prerelease: false
|
118
127
|
version_requirements: !ruby/object:Gem::Requirement
|
119
128
|
requirements:
|
120
129
|
- - "~>"
|
121
130
|
- !ruby/object:Gem::Version
|
122
|
-
version: 2.
|
131
|
+
version: '2.12'
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 2.12.1
|
123
135
|
- !ruby/object:Gem::Dependency
|
124
|
-
name:
|
136
|
+
name: simplecov
|
125
137
|
requirement: !ruby/object:Gem::Requirement
|
126
138
|
requirements:
|
127
139
|
- - "~>"
|
128
140
|
- !ruby/object:Gem::Version
|
129
|
-
version:
|
141
|
+
version: 0.21.2
|
130
142
|
type: :development
|
131
143
|
prerelease: false
|
132
144
|
version_requirements: !ruby/object:Gem::Requirement
|
133
145
|
requirements:
|
134
146
|
- - "~>"
|
135
147
|
- !ruby/object:Gem::Version
|
136
|
-
version:
|
148
|
+
version: 0.21.2
|
137
149
|
- !ruby/object:Gem::Dependency
|
138
|
-
name:
|
150
|
+
name: rake
|
139
151
|
requirement: !ruby/object:Gem::Requirement
|
140
152
|
requirements:
|
141
153
|
- - "~>"
|
142
154
|
- !ruby/object:Gem::Version
|
143
|
-
version: '
|
155
|
+
version: '13.0'
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: 13.0.6
|
144
159
|
type: :development
|
145
160
|
prerelease: false
|
146
161
|
version_requirements: !ruby/object:Gem::Requirement
|
147
162
|
requirements:
|
148
163
|
- - "~>"
|
149
164
|
- !ruby/object:Gem::Version
|
150
|
-
version: '
|
165
|
+
version: '13.0'
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: 13.0.6
|
151
169
|
description: Creates an immutable struct in one step.
|
152
170
|
email:
|
153
171
|
- public.gma@gmail.com
|
@@ -172,6 +190,8 @@ files:
|
|
172
190
|
- bin/setup
|
173
191
|
- immutable_struct_ex.gemspec
|
174
192
|
- lib/immutable_struct_ex.rb
|
193
|
+
- lib/immutable_struct_ex/comparable.rb
|
194
|
+
- lib/immutable_struct_ex/immutable.rb
|
175
195
|
- lib/immutable_struct_ex/version.rb
|
176
196
|
homepage: https://github.com/gangelo/immutable_struct_ex
|
177
197
|
licenses:
|