recursive_struct 0.0.6 → 0.0.7

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDZjODIwNzIwODg3YjQ1ZmM2OGM4Zjg4M2E5ZDZmZGVjZjdhMjFkMg==
4
+ YWI4ZDczZmFhOTYxNWQ2Nzk5MTI3ZGNmMTkzMWQ2M2EwYjU4MzBmYw==
5
5
  data.tar.gz: !binary |-
6
- OWRmNWUwMWZlMTkyNWZiM2ZiMGI3ODZiMjFhNjQzNjkxNzJmNjMyOQ==
6
+ MzgxZTAyMTQyN2RiNWM4Y2Y4YWZiMTM4OTA4MWRjZDc5ZjRkNTJlMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZGI0NWFkMzc2NWM4NDRmMTkzYjcyZmYzMzRjODZhMjA4MDY1YzEzNzYyYWVk
10
- YWJmY2IwMmY0MjBhZmI0ODY1N2QyMDFjNDVjMzJiZWZkMTI2MDIxMTI0YmNm
11
- ZmM1OWQzNTgxNDM1NmExYzFjNzBjODIzM2UwMTc2ZWU2YmExZDY=
9
+ YjU1M2JhNjE1NGI2ZTM3YzZkNTY3NGVmZjQ0NWFmNmQ0MjJjNjE1MjllNGQ1
10
+ M2NjMWExNDM5NTE2NDc1YWQ0ZDVmNWVjYWYzZDg3ODM2MTRlMGJlZjIzMTJl
11
+ MWEyYWU5ZWFiYzA1ODgxODkwMTFjNTRiZTQ4OGQxMDk5MDNiY2Y=
12
12
  data.tar.gz: !binary |-
13
- MzY5NmE3ZWJhZTFjZDljNDM1MTIwMTQyN2U5NDdiYWIwODJmNmQ2NmQ5ZjVi
14
- MzU4OWM1MjFiNzQ4MGJlODk5YzRkOTgyYjJmYWEzY2EyYzhlZWVkMDRjMDI0
15
- NWVjMzc2MWVhOWVjYTA2NTFmNzU5ZGFhYTE5ZDU5N2ZiMjM0MDU=
13
+ NDUzYTRiN2FlNDAzYzkwZDc4NDU3OTIxNDQ1NGY4N2ZlNzVjMzZkMjJmNGEw
14
+ N2ViNGFkZDJjYTYzMDJmZWVlODdkYzMxMjY5NmJkNjlmZDdkNGMyMDc1ZjIy
15
+ YTJiNDc3MzJlOThmM2Q4OGVjMWFlZDhlNTFlMTg0NGUwNzA2MTk=
data/.gitignore CHANGED
@@ -13,3 +13,4 @@
13
13
  *.a
14
14
  mkmf.log
15
15
  *.gem
16
+ /.idea
data/README.md CHANGED
@@ -27,13 +27,16 @@ struct = RecursiveStruct.new(hash}
27
27
  struct.a # #<RecursiveStruct @data={:b=>true}>
28
28
  struct.a.b # true
29
29
  struct.c # false
30
+ struct.d # nil
30
31
  ```
31
32
 
32
33
  You can also use a setter for a method that doesn't exist. A getter and setter will be generated dynamically.
33
34
  ```
34
35
  struct = RecursiveStruct.new
35
36
  struct.a = true
36
- struct.a # true
37
+ struct[:b] = true
38
+ struct.a # true
39
+ struct[:b] # true
37
40
  ```
38
41
 
39
42
  If this value happens to be a hash, it will be wrapped in a RecursiveStruct.
@@ -4,33 +4,25 @@ class RecursiveStruct
4
4
  include RecursiveStruct::Data
5
5
 
6
6
  def initialize(hash = nil)
7
- if hash
8
- hash.each do |key, value|
9
- set_data(key, value)
10
- end
11
- end
7
+ hash.each { |key, value| set_data(key, value) } if hash
12
8
  end
13
9
 
14
- def method_missing(name, *args)
10
+ def method_missing(name, *args, &block)
15
11
  key = name.to_s
16
12
 
17
13
  if key.include?('=')
18
14
  add_setter(key.chomp('='), *args)
19
15
  elsif data.respond_to?(key)
20
- send_data(key, *args)
16
+ send_data(key, *args, &block)
21
17
  elsif args.length == 0
22
18
  get_data(key)
23
19
  else
24
- super(name, *args)
20
+ super(name, *args, &block)
25
21
  end
26
22
  end
27
23
 
28
24
  private
29
25
 
30
- def process(value)
31
- value.is_a?(Hash) ? self.class.new(value) : value
32
- end
33
-
34
26
  def add_setter(key, *args)
35
27
  if key == '[]' && args.length == 2
36
28
  set_data(args.first, args.last)
@@ -15,8 +15,8 @@ class RecursiveStruct
15
15
  data[key.to_sym]
16
16
  end
17
17
 
18
- def send_data(key, *args)
19
- data.send(key, *args)
18
+ def send_data(key, *args, &block)
19
+ data.send(key, *args, &block)
20
20
  end
21
21
 
22
22
  private
@@ -1,3 +1,3 @@
1
1
  class RecursiveStruct
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recursive_struct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phillip Boksz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-04 00:00:00.000000000 Z
11
+ date: 2014-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  version: '0'
107
107
  requirements: []
108
108
  rubyforge_project:
109
- rubygems_version: 2.4.2
109
+ rubygems_version: 2.4.5
110
110
  signing_key:
111
111
  specification_version: 4
112
112
  summary: A gem to create recursive structs similar to open struct.