attr_init 0.0.4 → 0.1.4

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9da3988b53195faca639b398ebe6dbe700f5b693
4
- data.tar.gz: 48c0be1f2c8e5eb5a054229c7c43e5b7dad8ffd2
3
+ metadata.gz: ef8d108988a16ffd604572acb9c10f303e911f3e
4
+ data.tar.gz: d8512a3ba4e4829b826342a1b8212c0146e872f8
5
5
  SHA512:
6
- metadata.gz: 8874ee0a9e363a96b2869cf682f2f12c377eb665a0017d29e4f34a083bc23513df902b119e9d9054ffca06b2b6c702fc3bbcdf16c5030b4618cc575362071053
7
- data.tar.gz: 3fe9769685289086376a14f59c0db1bb8cab2ca353e8e7603eb6b40fd41b5e9f142f233931047d8651d48bdb6bc348adf53f3939140acfd51e14858cbe1d03ce
6
+ metadata.gz: 9bf67ee47b13fc67f180eb6d7d43a4837a8c802109e459c21b0eb64df71a889794045cf4d30ecbb5f5521833a9e333db877154563d09d8f85d3d4ecccc73f47e
7
+ data.tar.gz: 974af746b45de9f5583542d7e3efae0b5694bbc2853051b07dbcb7ef5fd7a11108c1387fcf072d5a74dedcce2874825a8fde23c40313d5e5ab5b8a399471020d
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_dependency "fattr"
22
+
21
23
  spec.add_development_dependency "simplecov", "~> 0.8.0"
22
24
  spec.add_development_dependency "coveralls", "~> 0.7.0"
23
25
  spec.add_development_dependency "bundler", "~> 1.6"
@@ -1,4 +1,6 @@
1
1
  require "attr_init/version"
2
+ require 'fattr'
3
+ require 'set'
2
4
 
3
5
  def attr_init(*attrs)
4
6
  AttrInit.add_new_attrs(self, attrs)
@@ -16,6 +18,32 @@ def attr_init(*attrs)
16
18
  end
17
19
  end
18
20
 
21
+ def fattr_init(*attrs)
22
+ class_eval do
23
+ def initialize(params)
24
+ fattr_init(params)
25
+ end
26
+
27
+ protected
28
+
29
+ def fattr_init(params)
30
+ params.each do |key, value|
31
+ send key, value
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ def fattr_hash(*attrs)
38
+ class_eval do
39
+ def to_hash
40
+ self.class.fattrs.each_with_object({}) do |key, hash|
41
+ hash[key] = send key
42
+ end
43
+ end
44
+ end
45
+ end
46
+
19
47
  def attr_hash(*attrs)
20
48
  define_method(:to_h) do
21
49
  AttrInit.get_attrs(self.class).each_with_object({}) do |attr, hash|
@@ -31,9 +59,9 @@ def reader_struct(*attrs)
31
59
  end
32
60
 
33
61
  def accessor_struct(*attrs)
34
- attr_accessor *attrs
35
- attr_init *attrs
36
- attr_hash *attrs
62
+ fattrs *attrs
63
+ fattr_init *attrs
64
+ fattr_hash *attrs
37
65
  end
38
66
 
39
67
  module AttrInit
@@ -42,7 +70,7 @@ module AttrInit
42
70
  hidden_attrs = get_attrs(scope.superclass)
43
71
  scope.class_variable_set hidden_attrs_variable_name, hidden_attrs + attrs
44
72
  rescue NameError => e
45
- scope.class_variable_set hidden_attrs_variable_name, attrs
73
+ scope.class_variable_set hidden_attrs_variable_name, Set.new(attrs)
46
74
  end
47
75
  end
48
76
 
@@ -1,3 +1,3 @@
1
1
  module AttrInit
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attr_init
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - johnmcconnell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-10 00:00:00.000000000 Z
11
+ date: 2015-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fattr
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: simplecov
15
29
  requirement: !ruby/object:Gem::Requirement