massager 0.3.0 → 0.3.1

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: c76b7d2aefdb4e9d17182759b7c7abcf25793f8b
4
- data.tar.gz: eb96295d2ede881cf36fd89540fc16f805269c4b
3
+ metadata.gz: 78a1fd152f231a1aeffae99644dbc95b6cf8583d
4
+ data.tar.gz: 371c921b1552297cae85ccc5220f117e0a2f9885
5
5
  SHA512:
6
- metadata.gz: aafea83a72a4438db9be150cb8c4c230d1c12b33901214a2cec88f864afaa6c5b77adcd3fde16d75e78303042ca1663eb3ac8d08ace0f84d3775a435841ba3ac
7
- data.tar.gz: 9fb64863a5619f31690f6d440e7602f4e1049254b95a2fcbeffb787c7d1fb42d780a8dc50e2f81be3865569481fd8f38348754195788cf86e85abbc78416a47b
6
+ metadata.gz: e89af400a3047eff8b7b9aa209ed07082cbf1956d8bc12b1d9ef4ed7d39919adc4afcbb4588d4c6c1d41bf37a359322703f68dc99e82e1e03806971ca24cc67f
7
+ data.tar.gz: e7a1062b52df8b43fdeda66b4c212963e9b1a98bc1f19a461a3663da1f498efb368bf4730bb41ba3f86e4fddf52e8f5e467022808a09829e0d823f17084e0945
data/README.md CHANGED
@@ -58,8 +58,7 @@ It will raise an error if the type is not correct:
58
58
  ```ruby
59
59
  testable = ExampleClass.call({"bar" => "value"})
60
60
  testable.foo #=> "value"
61
- testable = ExampleClass.call({"bar" => 123})
62
- testable.foo #=> raises Dry::Types::ConstraintError
61
+ testable = ExampleClass.call({"bar" => 123}) #=> raises Dry::Types::ConstraintError
63
62
  ```
64
63
  If you want to define your own types, check the Dry Types library. Type needs to respond to `call` method, so
65
64
  you can define your own
@@ -1,3 +1,3 @@
1
1
  module Massager
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
data/lib/massager.rb CHANGED
@@ -28,19 +28,23 @@ module Massager
28
28
  def call(attrs)
29
29
  check_schema(attrs)
30
30
  instance = new
31
- _container.each_key.select {|a| a.include?("attributes.")}.each do |k|
32
- attribute = resolve(k)
31
+ _container.keys.select {|a| a.include?("attributes.")}.each do |k|
32
+ attribute = _container.resolve(k)
33
33
  instance.public_send("#{attribute.name}=", attrs) if attribute.match_schema?(attrs)
34
34
  end
35
35
  instance
36
36
  end
37
37
 
38
+ def _container
39
+ @container ||= Dry::Container.new
40
+ end
41
+
38
42
  private
39
43
 
40
44
  def check_schema(attrs)
41
45
  attr_keys = attrs.keys.to_set
42
46
  if _container.key?("schema")
43
- schema = resolve("schema")
47
+ schema = _container.resolve("schema")
44
48
  attr_keys = attr_keys.find_all {|a| schema.include?(a)}
45
49
  raise ArgumentError, "Missing keys: #{(schema - attr_keys).to_a}" unless schema.subset?(attr_keys.to_set)
46
50
  end
@@ -48,24 +52,24 @@ module Massager
48
52
 
49
53
  def add_keys_to_schema(opts, target_keys)
50
54
  Dry::Monads::Maybe(opts[:strict]).fmap {
51
- unless key?(:schema)
52
- register(:schema, Set.new)
55
+ unless _container.key?(:schema)
56
+ _container.register(:schema, Set.new)
53
57
  end
54
58
  target_keys.each do |k|
55
- resolve(:schema) << k
59
+ _container.resolve(:schema) << k
56
60
  end
57
61
  }
58
62
  end
59
63
 
60
64
  def register_attribute(attribute)
61
- namespace(:attributes) do
65
+ _container.namespace(:attributes) do
62
66
  register(attribute.name, attribute)
63
67
  end
64
68
  end
65
69
 
66
70
  def define_setter(name)
67
71
  define_method "#{name}=", Proc.new {|values|
68
- attribute = self.class.resolve("attributes.#{name}")
72
+ attribute = self.class._container.resolve("attributes.#{name}")
69
73
  instance_variable_set(:"@#{name}", attribute.call(values))
70
74
  }
71
75
  end
@@ -75,10 +79,18 @@ module Massager
75
79
  instance_variable_get(:"@#{name}")
76
80
  }
77
81
  end
82
+
83
+ def inherited(subclass)
84
+ subclass_container = Dry::Container.new
85
+ _container.each_key do |k|
86
+ subclass_container.register(k, _container.resolve(k).clone)
87
+ end
88
+ subclass.instance_variable_set(:"@container", subclass_container)
89
+ end
78
90
  end
79
91
 
92
+
80
93
  def self.included(base)
81
94
  base.extend(ClassMethods)
82
- base.extend(Dry::Container::Mixin)
83
95
  end
84
96
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: massager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janis Miezitis