rake_factory 0.1.0 → 0.2.0

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
  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