rake_factory 0.1.0 → 0.2.0

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
  SHA256:
3
- metadata.gz: 65dfd0c16b46d5a92f80cb31ac7c20903890781d1462506da6840cb7a33e4a51
4
- data.tar.gz: a18296c9e97aa6d1b337b25ae7ccee876f22c0eee8aa8229caf816b1a0e65b8c
3
+ metadata.gz: b4cc6dab3125b027d5564b1c84f28c1c5332b2a8b44d290d9a74ed5855bdc94b
4
+ data.tar.gz: 6d7f3f724bae833ab50637c93cb88d8f20b411329d28ac013d967635b65d30d3
5
5
  SHA512:
6
- metadata.gz: 5be16b8b97266936141cb81bdddbbd8a0769cb1dddc25e3a21d0d1f9acf6dcfebd1211da0d77ee7ecd8ecccd3f0500b0693c965c97a2434c4caeae4a30926a6b
7
- data.tar.gz: 4aa0e027f8ba9eead68691a5ec74e9ac987bba59136681d1da143f21693cc036df43d1cd532e45987cd52bfe6108d496eecd64aadc5bcaa4ae83b3b6231042d6
6
+ metadata.gz: 0d97d94b11a07d4a7b6c0f88cc079345d2a7e71ea9496476aac00298db3fab6d4118547eb22d8509705adbabdb52ee6bef0cd971bbcaaddee7efd85bd8daa271
7
+ data.tar.gz: 6c7225f60a59df1644e7442670e1465189e745a7adce65cc0af3799e9d71756df27396401f8b0484c79c12eb79d33030f93c25197378fc02aa73ff92ae1ca46e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake_factory (0.1.0)
4
+ rake_factory (0.2.0)
5
5
  activesupport (~> 5.2)
6
6
  rake (~> 13.0)
7
7
 
@@ -32,11 +32,17 @@ module RakeFactory
32
32
  def define_on(klass)
33
33
  parameter = self
34
34
  klass.class_eval do
35
- attr_reader parameter.reader_method
36
35
  define_method parameter.writer_method do |value|
37
- instance_variable_set(
38
- parameter.instance_variable,
39
- parameter.transform.call(value))
36
+ instance_variable_set(parameter.instance_variable, value)
37
+ end
38
+
39
+ define_method parameter.reader_method do
40
+ stored_value = instance_variable_get(parameter.instance_variable)
41
+ resolved_value = stored_value.respond_to?(:call) ?
42
+ stored_value.call(*[self].slice(0, stored_value.arity)) :
43
+ stored_value
44
+ transformed_value = parameter.transform.call(resolved_value)
45
+ transformed_value
40
46
  end
41
47
  end
42
48
  end
@@ -2,7 +2,7 @@ module RakeFactory
2
2
  class ParameterView
3
3
  attr_reader(:task)
4
4
 
5
- def initialize(task)
5
+ def initialize(task, args)
6
6
  self.instance_eval do
7
7
  task.class.parameter_set.each do |parameter|
8
8
  define_singleton_method parameter.reader_method do
@@ -11,11 +11,16 @@ module RakeFactory
11
11
 
12
12
  if parameter.configurable?
13
13
  define_singleton_method parameter.writer_method do |value|
14
- task.send(parameter.writer_method, value)
14
+ resolved_value = lambda do |t|
15
+ value.respond_to?(:call) ?
16
+ value.call(*[t, args].slice(0, value.arity)) :
17
+ value
18
+ end
19
+ task.send(parameter.writer_method, resolved_value)
15
20
  end
16
21
  end
17
22
  end
18
23
  end
19
24
  end
20
25
  end
21
- end
26
+ end
@@ -43,7 +43,7 @@ module RakeFactory
43
43
 
44
44
  def invoke_configuration_block(args)
45
45
  if configuration_block
46
- view = ParameterView.new(self)
46
+ view = ParameterView.new(self, args)
47
47
  configuration_block.call(
48
48
  *[view, args].slice(0, configuration_block.arity))
49
49
  end
@@ -1,3 +1,3 @@
1
1
  module RakeFactory
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake_factory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson