carb-container 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 +4 -4
- data/README.md +3 -3
- data/bin/console +2 -6
- data/lib/carb/container/registerer.rb +5 -5
- data/lib/carb/container/registration_glue.rb +24 -4
- data/lib/carb/container/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b2266086979fc001d37b802f0737e46a0101fa7
|
4
|
+
data.tar.gz: 85fe087f9b35d32ee015b897f3eeba8f6a670a3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fe8e15f66cae9431cec660c5cbd082e13c5394d5a6c619dc99ccff405ff702ef206acc6f7e94770e0b10ab3e34e4c866f786b45c53f2a7acdf4421cd729f489
|
7
|
+
data.tar.gz: 0353b4d1bb150e98b3a8815f62e1585b7cd0d41523ace337c6778f0764255d95c3f20dbbe6a66d02e5ccb22605af1adeec1278c66efd000b80a4df8b2135eff7
|
data/README.md
CHANGED
@@ -61,9 +61,9 @@ container[:my_class].new.hello
|
|
61
61
|
|
62
62
|
### Carb::Container::RegistrationGlue
|
63
63
|
|
64
|
-
A utility class that allows you to create a class method inside `
|
65
|
-
you can easily register any newly created class. This is entirely
|
66
|
-
people who don't like monkey patching, can be skipped.
|
64
|
+
A utility class that allows you to create a class method inside `Module` so
|
65
|
+
that you can easily register any newly created class. This is entirely
|
66
|
+
optional, for people who don't like monkey patching, can be skipped.
|
67
67
|
|
68
68
|
```ruby
|
69
69
|
MyContainer = Carb::Container::RegistryContainer.new
|
data/bin/console
CHANGED
@@ -6,9 +6,5 @@ require "carb/container"
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|
9
|
+
require "pry"
|
10
|
+
Pry.start(__FILE__)
|
@@ -17,18 +17,18 @@ module Carb::Container
|
|
17
17
|
def initialize(container, converter: ClassNameToMethodName.new)
|
18
18
|
@container = container
|
19
19
|
@converter = converter
|
20
|
+
def_carb_container(container, converter)
|
20
21
|
end
|
21
22
|
|
22
|
-
|
23
|
-
# Required for scope purposes
|
24
|
-
kontainer = container
|
25
|
-
convert = converter
|
23
|
+
private
|
26
24
|
|
27
|
-
|
25
|
+
def def_carb_container(kontainer, convert)
|
26
|
+
define_method(:carb_container) do |as: nil|
|
28
27
|
as ||= convert.call(self.name.to_s)
|
29
28
|
as = as.to_sym
|
30
29
|
kontainer.register(as, -> { self })
|
31
30
|
end
|
31
|
+
send(:protected, :carb_container)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -10,8 +10,9 @@ module Carb::Container
|
|
10
10
|
# @param container [#register] a generic object, usually a
|
11
11
|
# {RegistryContainer} which responds to `#register(name, dependency)`,
|
12
12
|
# it's the only required argument
|
13
|
-
# @param target [
|
14
|
-
# `carb_container`. Usually it's {::
|
13
|
+
# @param target [Class, Module] class where you want to add the class
|
14
|
+
# method `carb_container`. Usually it's the {::Module} class so it's
|
15
|
+
# available on all classes
|
15
16
|
# @param registerer [Module] subclass of a module which can be included.
|
16
17
|
# Usually it's {Registerer} which is an internal module used to store
|
17
18
|
# objects inside a container which responds to `#register`
|
@@ -20,11 +21,30 @@ module Carb::Container
|
|
20
21
|
# name. By default it uses an instance of {ClassNameToMethodName}
|
21
22
|
def call(
|
22
23
|
container,
|
23
|
-
target:
|
24
|
+
target: Module,
|
24
25
|
registerer: Registerer,
|
25
26
|
converter: ClassNameToMethodName.new
|
26
27
|
)
|
27
|
-
|
28
|
+
registerer_instance = registerer.new(container, converter: converter)
|
29
|
+
|
30
|
+
include_registerer(target, registerer_instance)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def perform_include(target, includer, registerer)
|
36
|
+
target.send(includer, registerer)
|
37
|
+
end
|
38
|
+
|
39
|
+
def include_registerer(target, registerer)
|
40
|
+
includer = inclusion_method(target)
|
41
|
+
|
42
|
+
perform_include(target, includer, registerer)
|
43
|
+
end
|
44
|
+
|
45
|
+
def inclusion_method(target)
|
46
|
+
return :include if target <= Module
|
47
|
+
:extend
|
28
48
|
end
|
29
49
|
|
30
50
|
class << self
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carb-container
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fire-Dragon-DoL
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: carb-core
|