evt-subst_attr 0.1.0.2 → 0.2.0.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
- SHA1:
3
- metadata.gz: 4dea0601ab8801bd6d8d3e2421831819bbc08ba3
4
- data.tar.gz: ec70e3ef62b362c4d510a0f61b06e52b6a95013c
2
+ SHA256:
3
+ metadata.gz: 9c2492920559c438f81ab423c64780cab728da18ac49b6f1ecce7bd0dc217f18
4
+ data.tar.gz: bad346b34a2d4793e27b518300327fc4eb041a2a77bc14a65bd84d2981c4c40f
5
5
  SHA512:
6
- metadata.gz: f2c38e7b9cdb5c4f71517a3632693a6217c66040583e19c2ea306909532e7879071cf891f807c4baa42cf0a0b1331ab6a5d95d7127fac73fe3d2cd96394f00a6
7
- data.tar.gz: 1904c85c3bdf41ee0d2d535b4f9b2b9606fff9359822bca9c2f2bb18d6ab4d6c04fa17787e806b02b6c6eea9b79b4ba5c086fd36103e44a04e2da10e86d0c79d
6
+ metadata.gz: 38090e6794ef9b7b1b9df7e85a0f8a145227b12f480b563ddca9f8acfa0cbea56e5845bd72b7dbee2ff1b934246c3db0a45667658ab5a27ce6d38b5075bdbbd0
7
+ data.tar.gz: 7953d7d8adcec6dbb03712ae13038b370cc110d054d6e298abffdfd03082a5590e84f04386fc4c43d64bf14f1748d2413ad04ace86a4cd2b3004413afc3b8e95
@@ -2,7 +2,7 @@ module SubstAttr
2
2
  module Attribute
3
3
  def self.define(target_class, attr_name, interface=nil)
4
4
  ::Attribute::Define.(target_class, attr_name, :accessor) do
5
- Substitute.build interface
5
+ Substitute.build(interface)
6
6
  end
7
7
  end
8
8
  end
@@ -0,0 +1,2 @@
1
+ require 'subst_attr/controls/dependency'
2
+ require 'subst_attr/controls/example'
@@ -0,0 +1,20 @@
1
+ module SubstAttr
2
+ module Controls
3
+ module Dependency
4
+ class Example
5
+ def self.configure(receiver)
6
+ receiver.some_attr = new
7
+ end
8
+
9
+ module Substitute
10
+ def self.build
11
+ :some_substutute
12
+ end
13
+ end
14
+
15
+ class Descendant < Example
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ module SubstAttr
2
+ module Controls
3
+ class Example
4
+ extend SubstAttr::Macro
5
+
6
+ subst_attr :some_attr, Dependency::Example
7
+
8
+ subst_attr :weak_attr
9
+
10
+ def self.build
11
+ new.tap do |instance|
12
+ Dependency::Example.configure(instance)
13
+ end
14
+ end
15
+
16
+ module Ancestry
17
+ class Example
18
+ extend SubstAttr::Macro
19
+
20
+ subst_attr :some_attr, Dependency::Example::Descendant
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -4,11 +4,11 @@ module SubstAttr
4
4
 
5
5
  def build(interface=nil)
6
6
  if interface
7
- specialization = specialization(interface, :Substitute)
7
+ specialization = specialization(interface)
8
8
  return specialization if specialization
9
9
  end
10
10
 
11
- return NullObject.build interface
11
+ return NullObject.build(interface)
12
12
  end
13
13
 
14
14
  def call(attr_name, receiver)
@@ -17,7 +17,8 @@ module SubstAttr
17
17
  receiver.send :"#{attr_name}=", substitute
18
18
  end
19
19
 
20
- def specialization(interface, const_name)
20
+ def specialization(interface)
21
+ const_name = :Substitute
21
22
  unless interface.const_defined?(const_name)
22
23
  return nil
23
24
  end
@@ -28,7 +29,7 @@ module SubstAttr
28
29
  return nil
29
30
  end
30
31
 
31
- mod.send :build
32
+ mod.send(:build)
32
33
  end
33
34
 
34
35
  module NullObject
@@ -43,13 +44,7 @@ module SubstAttr
43
44
 
44
45
  def build(interface=nil)
45
46
  if interface
46
- specialization = Substitute.specialization(interface, :NullObject)
47
-
48
- if specialization
49
- return specialization
50
- else
51
- return strict interface
52
- end
47
+ return strict(interface)
53
48
  end
54
49
 
55
50
  weak
@@ -62,7 +57,7 @@ module SubstAttr
62
57
  def strict(interface)
63
58
  Naught.build do |config|
64
59
  config.singleton
65
- config.impersonate interface
60
+ config.impersonate(interface)
66
61
  end.get
67
62
  end
68
63
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-subst_attr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.2
4
+ version: 0.2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-01 00:00:00.000000000 Z
11
+ date: 2018-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-attribute
@@ -61,6 +61,9 @@ files:
61
61
  - lib/subst_attr.rb
62
62
  - lib/subst_attr/activate.rb
63
63
  - lib/subst_attr/attribute.rb
64
+ - lib/subst_attr/controls.rb
65
+ - lib/subst_attr/controls/dependency.rb
66
+ - lib/subst_attr/controls/example.rb
64
67
  - lib/subst_attr/macro.rb
65
68
  - lib/subst_attr/substitute.rb
66
69
  homepage: https://github.com/eventide-project/subst-attr
@@ -83,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
86
  version: '0'
84
87
  requirements: []
85
88
  rubyforge_project:
86
- rubygems_version: 2.6.11
89
+ rubygems_version: 2.7.3
87
90
  signing_key:
88
91
  specification_version: 4
89
92
  summary: Declare attributes that have default implementations that are substitutes