contextualizer 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/contextualizer.rb +15 -13
- data/lib/contextualizer/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 656da6e97d5a4805a96b5aae76332fd738c9727a
|
4
|
+
data.tar.gz: 0ec330dd1f6919269230eda301084792ac83be30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70d5adca95a69de4c41a852ccc290920008ab7fc7b58d95675039b7394adadb447f7ea15df842a2e4653b415c3c643d5d1e5976dcce7a3048e257d63445f1fd8
|
7
|
+
data.tar.gz: d83fac648dadc104b6c898dbdbf61c0d39f251a6bf73194eb6d3b7a41ec0947c1c6df7cd499d40957055f3eaceea3e0ca1dc9b196ebbbbb637e10aa0e5d26b33
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Contextualizer
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/contextualizer.svg)](https://badge.fury.io/rb/contextualizer)
|
3
4
|
[![CircleCI](https://circleci.com/gh/pabloh/contextualizer/tree/master.svg?style=shield)](https://circleci.com/gh/pabloh/contextualizer/tree/master)
|
4
5
|
[![Coverage Status](https://coveralls.io/repos/github/pabloh/contextualizer/badge.svg?branch=master)](https://coveralls.io/github/pabloh/contextualizer?branch=master)
|
5
6
|
|
data/lib/contextualizer.rb
CHANGED
@@ -2,33 +2,33 @@ require 'contextualizer/version'
|
|
2
2
|
|
3
3
|
module Contextualizer
|
4
4
|
def context(*attrs, **opt_attrs)
|
5
|
-
unless @
|
6
|
-
@
|
7
|
-
include Contextualizer.init_for(@
|
5
|
+
unless @__setter
|
6
|
+
@__setter = Setter.new
|
7
|
+
include Contextualizer.init_for(@__setter)
|
8
8
|
end
|
9
9
|
|
10
|
-
@
|
10
|
+
@__setter.add_attrs(*attrs, **opt_attrs)
|
11
11
|
attr_reader *attrs, *opt_attrs.keys
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.extended(klass)
|
15
15
|
klass.class_eval do
|
16
16
|
attr_reader :context
|
17
|
-
@
|
18
|
-
include Contextualizer.init_for(@
|
17
|
+
@__setter = Setter.new
|
18
|
+
include Contextualizer.init_for(@__setter, false)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
def self.init_for(setter,
|
22
|
+
def self.init_for(setter, inherited = true)
|
23
23
|
Module.new do |mod|
|
24
|
-
if
|
24
|
+
if inherited
|
25
25
|
mod.send(:define_method, :initialize) do |args = {}|
|
26
|
-
super()
|
26
|
+
super(args)
|
27
27
|
setter.set(self, args)
|
28
28
|
end
|
29
29
|
else
|
30
30
|
mod.send(:define_method, :initialize) do |args = {}|
|
31
|
-
super(
|
31
|
+
super()
|
32
32
|
setter.set(self, args)
|
33
33
|
end
|
34
34
|
end
|
@@ -48,11 +48,13 @@ module Contextualizer
|
|
48
48
|
def set(obj, args)
|
49
49
|
context = obj.context&.dup || {}
|
50
50
|
|
51
|
-
@opt_attrs.each { |key,
|
52
|
-
@attrs.each
|
51
|
+
@opt_attrs.each { |key, default| context[key] = args.key?(key) ? args[key] : default }
|
52
|
+
@attrs.each do |key|
|
53
|
+
fail ":#{key} was not found in scope" unless args.key?(key)
|
54
|
+
context[key] = args[key]
|
55
|
+
end
|
53
56
|
|
54
57
|
context.each do |attr, value|
|
55
|
-
fail ":#{attr} was not found in scope" if value.nil?
|
56
58
|
obj.instance_variable_set :"@#{attr}", value
|
57
59
|
end
|
58
60
|
|