recursive-open-struct 0.2.0 → 0.2.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.
- data/README.rdoc +8 -6
- data/VERSION +1 -1
- data/lib/recursive_open_struct.rb +9 -2
- data/recursive-open-struct.gemspec +2 -2
- metadata +11 -11
data/README.rdoc
CHANGED
@@ -3,17 +3,17 @@
|
|
3
3
|
RecursiveOpenStruct is a extension of OpenStruct.
|
4
4
|
It enhance OpenStruct in that it allows nested hashes to be treated in a recursive
|
5
5
|
fashion. For example:
|
6
|
+
ros = RecursiveOpenStruct.new( { :fooa => { :foob => 'fooc' } } )
|
7
|
+
can now be accessed this way :
|
8
|
+
ros.fooa.foob # 'fooc'
|
6
9
|
|
7
|
-
|
8
|
-
ros.a.b # 'c'
|
10
|
+
Also, if needed, nested hashes can still be accessed as hashes :
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
ros.a_as_a_hash # { :b => 'c' }
|
12
|
+
ros.fooa_as_a_hash # { :foob => 'fooc' }
|
13
13
|
|
14
14
|
== Installation
|
15
15
|
|
16
|
-
|
16
|
+
Available as a gem in rubygems, the default gem repository.
|
17
17
|
|
18
18
|
If you use bundler, just throw that in your gemfile :
|
19
19
|
gem 'recursive-open-struct'
|
@@ -21,6 +21,8 @@ If you use bundler, just throw that in your gemfile :
|
|
21
21
|
You may also install the gem manually :
|
22
22
|
gem install recursive-open-struct
|
23
23
|
|
24
|
+
Isn't that easy ? (Special thanks to the jeweler tool)
|
25
|
+
|
24
26
|
== Note on Patches/Pull Requests
|
25
27
|
|
26
28
|
* Fork the project.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
@@ -32,13 +32,20 @@ class RecursiveOpenStruct < OpenStruct
|
|
32
32
|
ostrct_or_hash = ostrct_or_hash.marshal_dump
|
33
33
|
end
|
34
34
|
|
35
|
-
|
35
|
+
# We'll display the key values like this : key = value
|
36
|
+
# to align display, we look for the maximum key length of the data that will be displayed
|
37
|
+
# (everything except hashes)
|
38
|
+
data_indent = ostrct_or_hash
|
39
|
+
.reject { |k, v| v.is_a?(RecursiveOpenStruct) || v.is_a?(Hash) }
|
40
|
+
.max {|a,b| a[0].to_s.length <=> b[0].to_s.length}[0].length
|
41
|
+
# puts "max length = #{data_indent}"
|
42
|
+
|
36
43
|
ostrct_or_hash.each do |key, value|
|
37
44
|
if (value.is_a?(RecursiveOpenStruct) || value.is_a?(Hash)) then
|
38
45
|
puts ' '*indent_level + key.to_s + '.'
|
39
46
|
display_recursive_open_struct(value, indent_level + 1, recursion_limit - 1)
|
40
47
|
else
|
41
|
-
puts ' '*indent_level + key.to_s + ' '*(data_indent - key.to_s.length) + '= ' + value.inspect
|
48
|
+
puts ' '*indent_level + key.to_s + ' '*(data_indent - key.to_s.length) + ' = ' + value.inspect
|
42
49
|
end
|
43
50
|
end
|
44
51
|
end
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{recursive-open-struct}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{William (B.J.) Snow Orvis}]
|
12
|
-
s.date = %q{2011-05-
|
12
|
+
s.date = %q{2011-05-31}
|
13
13
|
s.description = %q{RecursiveOpenStruct is a subclass of OpenStruct. It differs from
|
14
14
|
OpenStruct in that it allows nested hashes to be treated in a recursive
|
15
15
|
fashion. For example:
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recursive-open-struct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-05-
|
12
|
+
date: 2011-05-31 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &73346940 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *73346940
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &73346640 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *73346640
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &73346350 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *73346350
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rcov
|
49
|
-
requirement: &
|
49
|
+
requirement: &73346110 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *73346110
|
58
58
|
description: ! "RecursiveOpenStruct is a subclass of OpenStruct. It differs from\nOpenStruct
|
59
59
|
in that it allows nested hashes to be treated in a recursive\nfashion. For example:\n\n
|
60
60
|
\ ros = RecursiveOpenStruct.new({ :a => { :b => 'c' } })\n ros.a.b # 'c'\n\nAlso,
|
@@ -94,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
94
|
version: '0'
|
95
95
|
segments:
|
96
96
|
- 0
|
97
|
-
hash:
|
97
|
+
hash: 764807215
|
98
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
99
|
none: false
|
100
100
|
requirements:
|