attr_init 0.0.4 → 0.1.4

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