chickadee 6.0.3 → 6.0.5
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 +4 -4
- data/chickadee.gemspec +1 -1
- data/lib/chickadee.rb +1 -1
- data/lib/chickadee/container.rb +35 -0
- data/lib/chickadee/version.rb +1 -1
- data/spec/container_spec.rb +33 -0
- metadata +6 -17
- data/lib/chickadee/application.rb +0 -29
- data/lib/chickadee/application/block_installer.rb +0 -11
- data/lib/chickadee/application/bootstrapper.rb +0 -12
- data/lib/chickadee/application/container.rb +0 -15
- data/lib/chickadee/exceptions.rb +0 -4
- data/lib/chickadee/utils/string_inflections.rb +0 -20
- data/spec/application/block_installer_spec.rb +0 -20
- data/spec/application/bootstrapper_spec.rb +0 -38
- data/spec/application_spec.rb +0 -23
- data/spec/utils/string_inflections_spec.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 883fe7efbded160bb722acc23475ad409e469d96
|
4
|
+
data.tar.gz: d274eb18c304b9a097a13a7f42905a13ad4b4842
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb75f18ee45cf9ffab735300d67fe2b76490a65cfbd85277d03b4587b429f3e065d93bbfc746509e8e26fdc5600581f53fff6d6e648332c394bcd61066bc0f43
|
7
|
+
data.tar.gz: 6db2a0e20e5b34ac3246fe669c9ce145342714f1d7094dc994067616e509db9c6f35b72c18575967709c73e39cc7ea92c59dd75f54828f1234de6e2c0101ec11
|
data/chickadee.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "ioc", "~> 2.
|
21
|
+
spec.add_dependency "ioc", "~> 2.2.0"
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
24
|
spec.add_development_dependency "rake"
|
data/lib/chickadee.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'ioc'
|
2
|
+
|
3
|
+
module Chickadee
|
4
|
+
class Container < ::IOC::Container
|
5
|
+
def register_handler(*args)
|
6
|
+
auto_register(*args)
|
7
|
+
end
|
8
|
+
|
9
|
+
def auto_register(klass)
|
10
|
+
register(
|
11
|
+
underscore(demodulize(klass.name)).to_sym,
|
12
|
+
klass
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
def resolve_handler_for(request)
|
17
|
+
resolve(underscore(demodulize("#{request.class.name}Handler")).to_sym)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def underscore(str)
|
23
|
+
str
|
24
|
+
.gsub(/::/, '/')
|
25
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
26
|
+
.gsub(/([a-z\d])([A-Z])/,'\1_\2')
|
27
|
+
.tr("-", "_")
|
28
|
+
.downcase
|
29
|
+
end
|
30
|
+
|
31
|
+
def demodulize(constant_name)
|
32
|
+
constant_name.split('::').last
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/chickadee/version.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'chickadee/container'
|
3
|
+
|
4
|
+
describe Chickadee::Container do
|
5
|
+
describe '#auto_register' do
|
6
|
+
it 'registers class using class name' do
|
7
|
+
class TestClass; end
|
8
|
+
container = Chickadee::Container.new
|
9
|
+
container.auto_register(TestClass)
|
10
|
+
container.resolve(:test_class).wont_be_nil
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#register_handler' do
|
15
|
+
it 'registers handler using class name' do
|
16
|
+
class TestRequestHandler; end
|
17
|
+
container = Chickadee::Container.new
|
18
|
+
container.auto_register(TestRequestHandler)
|
19
|
+
container.resolve(:test_request_handler).wont_be_nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#resolve_handler_for' do
|
24
|
+
it 'registers handler using class name' do
|
25
|
+
class TestRequest; end
|
26
|
+
class TestRequestHandler; end
|
27
|
+
container = Chickadee::Container.new
|
28
|
+
request = TestRequest.new
|
29
|
+
container.register(:test_request_handler, TestRequestHandler)
|
30
|
+
container.resolve_handler_for(request).must_be_instance_of(TestRequestHandler)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chickadee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.
|
4
|
+
version: 6.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Lott
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.2.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.2.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,18 +81,10 @@ files:
|
|
81
81
|
- Rakefile
|
82
82
|
- chickadee.gemspec
|
83
83
|
- lib/chickadee.rb
|
84
|
-
- lib/chickadee/
|
85
|
-
- lib/chickadee/application/block_installer.rb
|
86
|
-
- lib/chickadee/application/bootstrapper.rb
|
87
|
-
- lib/chickadee/application/container.rb
|
88
|
-
- lib/chickadee/exceptions.rb
|
89
|
-
- lib/chickadee/utils/string_inflections.rb
|
84
|
+
- lib/chickadee/container.rb
|
90
85
|
- lib/chickadee/version.rb
|
91
|
-
- spec/
|
92
|
-
- spec/application/bootstrapper_spec.rb
|
93
|
-
- spec/application_spec.rb
|
86
|
+
- spec/container_spec.rb
|
94
87
|
- spec/spec_helper.rb
|
95
|
-
- spec/utils/string_inflections_spec.rb
|
96
88
|
homepage: ''
|
97
89
|
licenses:
|
98
90
|
- MIT
|
@@ -118,8 +110,5 @@ signing_key:
|
|
118
110
|
specification_version: 4
|
119
111
|
summary: Lightweight command library
|
120
112
|
test_files:
|
121
|
-
- spec/
|
122
|
-
- spec/application/bootstrapper_spec.rb
|
123
|
-
- spec/application_spec.rb
|
113
|
+
- spec/container_spec.rb
|
124
114
|
- spec/spec_helper.rb
|
125
|
-
- spec/utils/string_inflections_spec.rb
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'chickadee/application/container'
|
2
|
-
require 'chickadee/application/bootstrapper'
|
3
|
-
require 'chickadee/application/block_installer'
|
4
|
-
require 'chickadee/utils/string_inflections'
|
5
|
-
|
6
|
-
module Chickadee
|
7
|
-
class Application
|
8
|
-
def initialize(*installers, &block)
|
9
|
-
installers = [*installers]
|
10
|
-
installers << BlockInstaller.new(&block) if block_given?
|
11
|
-
@bootstrapper = Bootstrapper.new(Container, *installers)
|
12
|
-
end
|
13
|
-
|
14
|
-
def handle(request)
|
15
|
-
handler_registry_name = StringInflections.underscore(StringInflections.demodulize("#{request.class.name}Handler")).to_sym
|
16
|
-
@bootstrapper
|
17
|
-
.new_bootstrap_container
|
18
|
-
.resolve(handler_registry_name)
|
19
|
-
.handle(request)
|
20
|
-
end
|
21
|
-
|
22
|
-
def queue(request)
|
23
|
-
@bootstrapper
|
24
|
-
.new_bootstrap_container
|
25
|
-
.resolve(:request_queue)
|
26
|
-
.queue(request)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'ioc'
|
2
|
-
require 'chickadee/utils/string_inflections'
|
3
|
-
|
4
|
-
module Chickadee
|
5
|
-
class Container < ::IOC::Container
|
6
|
-
def register_service(service_name, service_object)
|
7
|
-
register(service_name, service_object, :as => :instance)
|
8
|
-
end
|
9
|
-
|
10
|
-
def register_handler(klass)
|
11
|
-
name = StringInflections.underscore(StringInflections.demodulize(klass.name)).to_sym
|
12
|
-
register(name, klass)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
data/lib/chickadee/exceptions.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
module Chickadee
|
2
|
-
module StringInflections
|
3
|
-
def self.underscore(str)
|
4
|
-
str
|
5
|
-
.gsub(/::/, '/')
|
6
|
-
.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
7
|
-
.gsub(/([a-z\d])([A-Z])/,'\1_\2')
|
8
|
-
.tr("-", "_")
|
9
|
-
.downcase
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.deconstantize(constant_name)
|
13
|
-
constant_name.split( '::' )[0,constant_name.split( '::' ).length-1].join('::')
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.demodulize(constant_name)
|
17
|
-
constant_name.split('::').last
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'chickadee/application/block_installer'
|
3
|
-
require 'chickadee/application/container'
|
4
|
-
|
5
|
-
describe Chickadee::BlockInstaller do
|
6
|
-
it 'can install from block' do
|
7
|
-
service = stub
|
8
|
-
installer = Chickadee::BlockInstaller.new do
|
9
|
-
register_service(:my_service, service)
|
10
|
-
end
|
11
|
-
container = Chickadee::Container.install(installer)
|
12
|
-
container.resolve(:my_service).must_equal(service)
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'can install without block' do
|
16
|
-
service = stub
|
17
|
-
installer = Chickadee::BlockInstaller.new
|
18
|
-
Chickadee::Container.install(installer)
|
19
|
-
end
|
20
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'chickadee/application/bootstrapper'
|
3
|
-
require 'chickadee/application/container'
|
4
|
-
require 'chickadee/application/block_installer'
|
5
|
-
|
6
|
-
describe Chickadee::Bootstrapper do
|
7
|
-
describe '#new_bootstrap_container' do
|
8
|
-
it 'returns container instance' do
|
9
|
-
container_class = Chickadee::Container
|
10
|
-
installer = Chickadee::BlockInstaller.new
|
11
|
-
bootstrapper = Chickadee::Bootstrapper.new(container_class, installer)
|
12
|
-
|
13
|
-
bootstrapper.new_bootstrap_container.must_be_instance_of(Chickadee::Container)
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'returns new container instance each call' do
|
17
|
-
container_class = Chickadee::Container
|
18
|
-
installer = Chickadee::BlockInstaller.new
|
19
|
-
bootstrapper = Chickadee::Bootstrapper.new(container_class, installer)
|
20
|
-
|
21
|
-
c1 = bootstrapper.new_bootstrap_container
|
22
|
-
c2 = bootstrapper.new_bootstrap_container
|
23
|
-
c1.wont_equal(c2)
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'installs container' do
|
27
|
-
service = stub
|
28
|
-
container_class = Chickadee::Container
|
29
|
-
installer = Chickadee::BlockInstaller.new do
|
30
|
-
register_service(:my_service, service)
|
31
|
-
end
|
32
|
-
bootstrapper = Chickadee::Bootstrapper.new(container_class, installer)
|
33
|
-
container = bootstrapper.new_bootstrap_container
|
34
|
-
|
35
|
-
container.resolve(:my_service).must_equal(service)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
data/spec/application_spec.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'chickadee/application'
|
3
|
-
|
4
|
-
describe Chickadee::Application do
|
5
|
-
it 'can handle a request' do
|
6
|
-
class RequestHandler
|
7
|
-
def handle(request)
|
8
|
-
request.is_success = true
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class Request
|
13
|
-
attr_accessor :is_success
|
14
|
-
end
|
15
|
-
|
16
|
-
app = Chickadee::Application.new do
|
17
|
-
register_handler(RequestHandler)
|
18
|
-
end
|
19
|
-
request = Request.new
|
20
|
-
app.handle(request)
|
21
|
-
request.is_success.must_equal(true)
|
22
|
-
end
|
23
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'chickadee/utils/string_inflections'
|
3
|
-
|
4
|
-
describe Chickadee::StringInflections do
|
5
|
-
describe '#underscore' do
|
6
|
-
it 'changes string to underscore' do
|
7
|
-
inflector.underscore("ThisIsAString").must_equal('this_is_a_string')
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'changes module notation to slash' do
|
11
|
-
inflector.underscore("ThisIs::AString").must_equal('this_is/a_string')
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#deconstantize' do
|
16
|
-
it 'gets namespace for current constant' do
|
17
|
-
inflector.deconstantize('A::B::C').must_equal('A::B')
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '#demodulize' do
|
22
|
-
it 'gets class name' do
|
23
|
-
inflector.demodulize('A::B::C').must_equal('C')
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def inflector
|
28
|
-
Chickadee::StringInflections
|
29
|
-
end
|
30
|
-
end
|