recursive-open-struct 0.4.5 → 0.5.0
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 +7 -0
- data/.travis.yml +7 -0
- data/lib/recursive_open_struct.rb +3 -1
- data/recursive-open-struct.gemspec +1 -0
- data/spec/recursive_open_struct_spec.rb +4 -2
- data/spec/spec_helper.rb +3 -1
- metadata +39 -26
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4442ce9b9b12e7e7b187a2df666cf8018c97a30d
|
4
|
+
data.tar.gz: d869866022cbc4e3bc5f7ade8b2ed424010b0823
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 217c2af046ca66b67c2f35d513dcd05dd4e00255ec73a67f66b80acf8403c62919728cab7c255f0435cd1e7264c2e53cb57a1be1b79eacc4bb85fe0b91ca27d5
|
7
|
+
data.tar.gz: f6a6aa2438f32e8f3d4021ddecd1547915702e00599475dff6e6ce6bfb23f9191f4f2400057531abfb455a0e6b1710cc184fc2884c21e9afcacca931bd13dc40
|
data/.travis.yml
ADDED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'ostruct'
|
2
2
|
|
3
3
|
class RecursiveOpenStruct < OpenStruct
|
4
|
-
VERSION = "0.
|
4
|
+
VERSION = "0.5.0"
|
5
5
|
|
6
6
|
def initialize(h=nil, args={})
|
7
7
|
@recurse_over_arrays = args.fetch(:recurse_over_arrays,false)
|
@@ -21,6 +21,8 @@ class RecursiveOpenStruct < OpenStruct
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
alias_method :to_hash, :to_h
|
25
|
+
|
24
26
|
def new_ostruct_member(name)
|
25
27
|
name = name.to_sym
|
26
28
|
unless self.respond_to?(name)
|
@@ -48,9 +48,11 @@ describe RecursiveOpenStruct do
|
|
48
48
|
|
49
49
|
describe "improvements on OpenStruct" do
|
50
50
|
it "can be converted back to a hash" do
|
51
|
-
|
51
|
+
blank_obj = Object.new
|
52
|
+
h = {:asdf => 'John Smith', :foo => [{:bar => blank_obj}, {:baz => nil}]}
|
52
53
|
ros = RecursiveOpenStruct.new(h)
|
53
54
|
ros.to_h.should == h
|
55
|
+
ros.to_hash.should == h
|
54
56
|
end
|
55
57
|
end
|
56
58
|
|
@@ -237,7 +239,7 @@ QUOTE
|
|
237
239
|
|
238
240
|
it "creates nested objects via subclass" do
|
239
241
|
RecursiveOpenStructSubClass = Class.new(RecursiveOpenStruct)
|
240
|
-
|
242
|
+
|
241
243
|
rossc = RecursiveOpenStructSubClass.new({ :one => [{:two => :three}] }, recurse_over_arrays: true)
|
242
244
|
|
243
245
|
rossc.one.first.class.should == RecursiveOpenStructSubClass
|
data/spec/spec_helper.rb
CHANGED
@@ -12,5 +12,7 @@ end
|
|
12
12
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
13
13
|
|
14
14
|
RSpec.configure do |config|
|
15
|
-
|
15
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
16
|
+
config.run_all_when_everything_filtered = true
|
17
|
+
config.filter_run :focus
|
16
18
|
end
|
metadata
CHANGED
@@ -1,69 +1,82 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recursive-open-struct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.5.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- William (B.J.) Snow Orvis
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-06-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rdoc
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: |
|
70
|
+
RecursiveOpenStruct is a subclass of OpenStruct. It differs from
|
71
|
+
OpenStruct in that it allows nested hashes to be treated in a recursive
|
72
|
+
fashion. For example:
|
73
|
+
|
74
|
+
ros = RecursiveOpenStruct.new({ :a => { :b => 'c' } })
|
75
|
+
ros.a.b # 'c'
|
76
|
+
|
77
|
+
Also, nested hashes can still be accessed as hashes:
|
78
|
+
|
79
|
+
ros.a_as_a_hash # { :b => 'c' }
|
67
80
|
email: aetherknight@gmail.com
|
68
81
|
executables: []
|
69
82
|
extensions: []
|
@@ -74,6 +87,7 @@ files:
|
|
74
87
|
- .document
|
75
88
|
- .gitignore
|
76
89
|
- .rspec
|
90
|
+
- .travis.yml
|
77
91
|
- Gemfile
|
78
92
|
- LICENSE.txt
|
79
93
|
- README.rdoc
|
@@ -86,27 +100,26 @@ files:
|
|
86
100
|
homepage: http://github.com/aetherknight/recursive-open-struct
|
87
101
|
licenses:
|
88
102
|
- MIT
|
103
|
+
metadata: {}
|
89
104
|
post_install_message:
|
90
105
|
rdoc_options: []
|
91
106
|
require_paths:
|
92
107
|
- lib
|
93
108
|
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
109
|
requirements:
|
96
|
-
- -
|
110
|
+
- - '>='
|
97
111
|
- !ruby/object:Gem::Version
|
98
112
|
version: '0'
|
99
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
114
|
requirements:
|
102
|
-
- -
|
115
|
+
- - '>='
|
103
116
|
- !ruby/object:Gem::Version
|
104
117
|
version: '0'
|
105
118
|
requirements: []
|
106
119
|
rubyforge_project:
|
107
|
-
rubygems_version:
|
120
|
+
rubygems_version: 2.0.14
|
108
121
|
signing_key:
|
109
|
-
specification_version:
|
122
|
+
specification_version: 4
|
110
123
|
summary: OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs
|
111
124
|
test_files:
|
112
125
|
- spec/recursive_open_struct_spec.rb
|