deepstruct 0.0.2 → 0.0.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.
- data/deepstruct.gemspec +1 -0
- data/lib/deepstruct.rb +13 -13
- data/lib/deepstruct/version.rb +1 -1
- metadata +24 -2
data/deepstruct.gemspec
CHANGED
data/lib/deepstruct.rb
CHANGED
@@ -5,34 +5,34 @@ module DeepStruct
|
|
5
5
|
def initialize(value)
|
6
6
|
@value = value
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
def unwrap
|
10
10
|
@value
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def [](index)
|
14
14
|
return DeepStruct.wrap(@value[index])
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
def []=(index, value)
|
18
18
|
@value[index] = value
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def inspect
|
22
22
|
"#<#{self.class} #{@value.inspect}>"
|
23
23
|
end
|
24
24
|
|
25
25
|
def to_json
|
26
|
-
@value.to_json
|
26
|
+
@value.to_json
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
class HashWrapper < DeepWrapper
|
31
31
|
def respond_to?(method)
|
32
|
-
@value.respond_to?(method) || self.has_key?(method.to_s.chomp('='))
|
32
|
+
@value.respond_to?(method) || self.has_key?(method.to_s.chomp('='))
|
33
33
|
end
|
34
34
|
|
35
|
-
# Given a symbol or a string this yields the variant of the key that
|
35
|
+
# Given a symbol or a string this yields the variant of the key that
|
36
36
|
# exists in the wrapped hash if any. If none exists (or the key is not
|
37
37
|
# a symbol or string) the input value is passed through unscathed.
|
38
38
|
def indiffrently(key, &block)
|
@@ -43,7 +43,7 @@ module DeepStruct
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def []=(key, value)
|
46
|
-
indiffrently(key) { |key| @value[key] = value }
|
46
|
+
indiffrently(key) { |key| @value[key] = value }
|
47
47
|
end
|
48
48
|
|
49
49
|
def [](key)
|
@@ -59,8 +59,8 @@ module DeepStruct
|
|
59
59
|
method = method.to_s
|
60
60
|
if method.chomp!('?')
|
61
61
|
key = method.to_sym
|
62
|
-
@value.has_key?(key) &&
|
63
|
-
elsif method.chomp!('=')
|
62
|
+
@value.has_key?(key) && !!self[key]
|
63
|
+
elsif method.chomp!('=')
|
64
64
|
raise ArgumentError, "wrong number of arguments (#{arg_count} for 1)", caller(1) if args.length != 1
|
65
65
|
self[method] = args[0]
|
66
66
|
elsif args.length == 0 && self.has_key?(method)
|
@@ -70,7 +70,7 @@ module DeepStruct
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
class ArrayWrapper < DeepWrapper
|
75
75
|
include Enumerable
|
76
76
|
|
@@ -85,7 +85,7 @@ module DeepStruct
|
|
85
85
|
end
|
86
86
|
alias :length :size
|
87
87
|
end
|
88
|
-
|
88
|
+
|
89
89
|
def self.wrap(value)
|
90
90
|
case value
|
91
91
|
when Hash
|
data/lib/deepstruct/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deepstruct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
30
46
|
description: A sibling of ostruct that handles deeply nested structures and basic
|
31
47
|
data type detection
|
32
48
|
email:
|
@@ -57,12 +73,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
57
73
|
- - ! '>='
|
58
74
|
- !ruby/object:Gem::Version
|
59
75
|
version: '0'
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
hash: 4197967560630197465
|
60
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
80
|
none: false
|
62
81
|
requirements:
|
63
82
|
- - ! '>='
|
64
83
|
- !ruby/object:Gem::Version
|
65
84
|
version: '0'
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
hash: 4197967560630197465
|
66
88
|
requirements: []
|
67
89
|
rubyforge_project: deepstruct
|
68
90
|
rubygems_version: 1.8.24
|