model_pack 0.9.7 → 0.9.8

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: dc4201ba6cb9b884ee4fefdcd9aacb0c1dd87788
4
- data.tar.gz: e3c63faa6d018537021f723d131e1a53955cbbb6
3
+ metadata.gz: 6e3431618487aca9441dc63def598c19facee8c2
4
+ data.tar.gz: 6af701855851fb9d9723c3afa9d4a53de3d93682
5
5
  SHA512:
6
- metadata.gz: 08f774a99e8ae7a4bde8587d737dc1ed60fc17d55f2af435dcdcd9d35b56004c579d004158417dc9c5ad11d666c3a41a2448de7950fa12f3ea00b2766df9319a
7
- data.tar.gz: bb1db9adae93f9b6db89739515933698721da24f5685767a26f4afbb0748ebfe771f9cad88d6eaedbd63a62f7aa415b46b02389c4f1b317b32bed78763e37aee
6
+ metadata.gz: c3b66df9a504671fa2855fa778ae4569ae16c87cf0f5e4b907737c7da3571176986421fc6a7a7268d2f7753eee48c713f5496861604c067361e7e8c327ad249f
7
+ data.tar.gz: e64b579657bf9b061a7db270fb242e3b478ae7156f90b243f5f2a08ece9699bd2b2ad4153de9e107cb20977ac40056816c94c6896fab0891c609e88184641976
@@ -14,17 +14,17 @@ module ModelPack
14
14
  end
15
15
 
16
16
  def attribute_reader(name, default: nil, as: nil, serialize: nil, predicate: nil)
17
- default_value = default.dup rescue default
17
+ dv = default.dup rescue default
18
18
 
19
19
  define_method name do
20
20
  instance_variable_defined?("@#{name}") ?
21
- instance_variable_get("@#{name}") : instance_variable_set("@#{name}", (as ? as.new : default_value))
21
+ instance_variable_get("@#{name}") : instance_variable_set("@#{name}", (as ? as.new : (dv.is_a?(Proc) ? dv.call : dv )))
22
22
  end
23
23
 
24
24
  # define predicate method if required
25
25
  define_method "#{name}?" do
26
26
  value = (instance_variable_defined?("@#{name}") ?
27
- instance_variable_get("@#{name}") : instance_variable_set("@#{name}", (default_value.is_a?(Class) ? default_value.new : default_value)))
27
+ instance_variable_get("@#{name}") : instance_variable_set("@#{name}", (as ? as.new : (dv.is_a?(Proc) ? dv.call : dv ))))
28
28
  predicate.is_a?(Proc) ? predicate.call(value) : !!value # false for nil or false
29
29
  end if predicate
30
30
 
@@ -1,3 +1,3 @@
1
1
  module ModelPack
2
- VERSION = "0.9.7"
2
+ VERSION = "0.9.8"
3
3
  end
@@ -275,11 +275,13 @@ describe ModelPack::ClassMethods do
275
275
 
276
276
  attribute :always_false, default: false
277
277
  attribute :always_true, default: true
278
+ attribute :dynamic_default, default: lambda { 1+5 }
278
279
  end
279
280
 
280
281
  data = BooleanData.new
281
282
 
282
283
  expect(data.always_false).to be false
283
284
  expect(data.always_true).to be true
285
+ expect(data.dynamic_default).to be 6
284
286
  end
285
287
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: model_pack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - inre
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  version: 2.3.0
97
97
  requirements: []
98
98
  rubyforge_project:
99
- rubygems_version: 2.4.6
99
+ rubygems_version: 2.4.3
100
100
  signing_key:
101
101
  specification_version: 4
102
102
  summary: Model Pack – simple models