recursive-open-struct 1.1.2 → 1.1.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/.travis.yml +9 -7
- data/AUTHORS.txt +2 -0
- data/CHANGELOG.md +10 -0
- data/lib/recursive_open_struct.rb +45 -22
- data/lib/recursive_open_struct/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cc972f20fd1aba4f8eea6fe1766c17c7d9e663a3ed999e8375549ac37ae4b08
|
4
|
+
data.tar.gz: 9c0d0230d431aedeae47f0f2026d77196dfb230c3ebe9359763b4265c9a4c4d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dcdc725048e24182c562551875b2fa90d100248008af5dd4a974bb8df82f48ec5f618b3d76458d16f868b76b55263e96d3576a6d92f5ace69979beb29ae3213f
|
7
|
+
data.tar.gz: d67c50798fcaa7ca49003a924e57df0a22e83a5d688ef6ff90b61f462855f2b6ef8882e5873c0994558416030a9b265fe60cccfe586fd5bf9688e463d92279fe
|
data/.travis.yml
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
---
|
2
2
|
language: ruby
|
3
3
|
rvm:
|
4
|
-
# No longer supported
|
5
|
-
# - 1.9.3 # json gem now requires Ruby ~> 2.0
|
4
|
+
# No longer supported (but test anyways)
|
6
5
|
- 2.0.0
|
7
6
|
- 2.1.10
|
8
7
|
- 2.2.10
|
9
8
|
- jruby-19mode
|
10
|
-
# Current stable supported by Travis
|
11
9
|
- 2.3.8
|
12
|
-
- 2.4.
|
13
|
-
|
14
|
-
- 2.
|
15
|
-
- 2.
|
10
|
+
- 2.4.10
|
11
|
+
# Current stable supported by Travis
|
12
|
+
- 2.5.8
|
13
|
+
- 2.6.6
|
14
|
+
- 2.7.1
|
16
15
|
- jruby-9.1.9.0
|
17
16
|
# Future
|
18
17
|
- ruby-head
|
19
18
|
- jruby-head
|
19
|
+
- truffleruby-head
|
20
20
|
sudo: false
|
21
21
|
matrix:
|
22
22
|
allow_failures:
|
@@ -25,7 +25,9 @@ matrix:
|
|
25
25
|
- rvm: 2.1.10
|
26
26
|
- rvm: 2.2.10
|
27
27
|
- rvm: 2.3.8
|
28
|
+
- rvm: 2.4.10
|
28
29
|
- rvm: jruby-19mode
|
29
30
|
# Future
|
30
31
|
- rvm: ruby-head
|
31
32
|
- rvm: jruby-head
|
33
|
+
- rvm: truffleruby-head
|
data/AUTHORS.txt
CHANGED
@@ -8,6 +8,8 @@ Recursive-open-struct was written by these fine people:
|
|
8
8
|
* Ewoud Kohl van Wijngaarden <ewoud@kohlvanwijngaarden.nl>
|
9
9
|
* Federico Aloi <federico.aloi@gmail.com>
|
10
10
|
* fervic <roberto@runawaybit.com>
|
11
|
+
* Igor Victor <gogainda@yandex.ru>
|
12
|
+
* Jean Boussier <jean.boussier@gmail.com>
|
11
13
|
* Joe Rafaniello <jrafanie@redhat.com>
|
12
14
|
* Kris Dekeyser <kris.dekeyser@libis.be>
|
13
15
|
* Matt Culpepper <matt@culpepper.co>
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
1.1.3 / 2020/10/15
|
2
|
+
==================
|
3
|
+
|
4
|
+
* No longer officially supporting Ruby 2.4.x, but compatiblity continues.
|
5
|
+
* [#68](https://github.com/aetherknight/recursive-open-struct/pull/68): Igor
|
6
|
+
Victor: Add truffleruby-head to travis
|
7
|
+
* FIX [#67](https://github.com/aetherknight/recursive-open-struct/pull/67):
|
8
|
+
Jean Boussier: Support upstream changes to OpenStruct in ruby-head (Ruby
|
9
|
+
3.0.0-dev)
|
10
|
+
|
1
11
|
1.1.2 / 2020/06/20
|
2
12
|
==================
|
3
13
|
|
@@ -39,13 +39,16 @@ class RecursiveOpenStruct < OpenStruct
|
|
39
39
|
@sub_elements = {}
|
40
40
|
end
|
41
41
|
|
42
|
-
def initialize_copy(orig)
|
43
|
-
super
|
44
42
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
43
|
+
if OpenStruct.public_instance_methods.include?(:initialize_copy)
|
44
|
+
def initialize_copy(orig)
|
45
|
+
super
|
46
|
+
|
47
|
+
# deep copy the table to separate the two objects
|
48
|
+
@table = @deep_dup.call(@table)
|
49
|
+
# Forget any memoized sub-elements
|
50
|
+
@sub_elements = {}
|
51
|
+
end
|
49
52
|
end
|
50
53
|
|
51
54
|
def to_h
|
@@ -56,6 +59,19 @@ class RecursiveOpenStruct < OpenStruct
|
|
56
59
|
# itself to be a "kind of" Hash.
|
57
60
|
alias_method :to_hash, :to_h
|
58
61
|
|
62
|
+
# Continue supporting older rubies -- JRuby 9.1.x.x is still considered
|
63
|
+
# stable, but is based on Ruby
|
64
|
+
# 2.3.x and so uses :modifiable instead of :modifiable?. Furthermore, if
|
65
|
+
# :modifiable is private, then make :modifiable? private too.
|
66
|
+
if !OpenStruct.private_instance_methods.include?(:modifiable?)
|
67
|
+
if OpenStruct.private_instance_methods.include?(:modifiable)
|
68
|
+
alias_method :modifiable?, :modifiable
|
69
|
+
elsif OpenStruct.public_instance_methods.include?(:modifiable)
|
70
|
+
alias_method :modifiable?, :modifiable
|
71
|
+
private :modifiable?
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
59
75
|
def [](name)
|
60
76
|
key_name = _get_key_from_table_(name)
|
61
77
|
v = @table[key_name]
|
@@ -69,11 +85,19 @@ class RecursiveOpenStruct < OpenStruct
|
|
69
85
|
end
|
70
86
|
end
|
71
87
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
88
|
+
if private_instance_methods.include?(:modifiable?) || public_instance_methods.include?(:modifiable?)
|
89
|
+
def []=(name, value)
|
90
|
+
key_name = _get_key_from_table_(name)
|
91
|
+
tbl = modifiable? # Ensure we are modifiable
|
92
|
+
@sub_elements.delete(key_name)
|
93
|
+
tbl[key_name] = value
|
94
|
+
end
|
95
|
+
else
|
96
|
+
def []=(name, value)
|
97
|
+
key_name = _get_key_from_table_(name)
|
98
|
+
@table[key_name] = value # raises if self is frozen in Ruby 3.0
|
99
|
+
@sub_elements.delete(key_name)
|
100
|
+
end
|
77
101
|
end
|
78
102
|
|
79
103
|
# Makes sure ROS responds as expected on #respond_to? and #method requests
|
@@ -82,17 +106,6 @@ class RecursiveOpenStruct < OpenStruct
|
|
82
106
|
@table.key?(mname) || super
|
83
107
|
end
|
84
108
|
|
85
|
-
# Continue supporting older rubies -- JRuby 9.1.x.x is still considered
|
86
|
-
# stable, but is based on Ruby
|
87
|
-
# 2.3.x and so uses :modifiable instead of :modifiable?. Furthermore, if
|
88
|
-
# :modifiable is private, then make :modifiable? private too.
|
89
|
-
if !OpenStruct.private_instance_methods.include?(:modifiable?)
|
90
|
-
alias_method :modifiable?, :modifiable
|
91
|
-
if OpenStruct.private_instance_methods.include?(:modifiable)
|
92
|
-
private :modifiable?
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
109
|
# Adapted implementation of method_missing to accommodate the differences
|
97
110
|
# between ROS and OS.
|
98
111
|
def method_missing(mid, *args)
|
@@ -155,6 +168,16 @@ class RecursiveOpenStruct < OpenStruct
|
|
155
168
|
|
156
169
|
private
|
157
170
|
|
171
|
+
unless OpenStruct.public_instance_methods.include?(:initialize_copy)
|
172
|
+
def initialize_dup(orig)
|
173
|
+
super
|
174
|
+
# deep copy the table to separate the two objects
|
175
|
+
@table = @deep_dup.call(@table)
|
176
|
+
# Forget any memoized sub-elements
|
177
|
+
@sub_elements = {}
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
158
181
|
def _get_key_from_table_(name)
|
159
182
|
return name.to_s if @table.has_key?(name.to_s)
|
160
183
|
return name.to_sym if @table.has_key?(name.to_sym)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recursive-open-struct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William (B.J.) Snow Orvis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|