recursive_struct 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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.