chickadee 3.0.0 → 5.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 +4 -4
- data/lib/chickadee/domain/repository.rb +31 -0
- data/lib/chickadee/exceptions.rb +0 -2
- data/lib/chickadee/version.rb +1 -1
- data/lib/chickadee.rb +1 -2
- metadata +3 -8
- data/lib/chickadee/dispatcher.rb +0 -34
- data/lib/chickadee/handler_chain_struct.rb +0 -17
- data/spec/dispatcher_spec.rb +0 -19
- data/spec/handler_chain_struct_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: 1726fc032c2d71a1ca06823ada526e2ef3aee649
|
4
|
+
data.tar.gz: 2d5b8838ff00426a79917c7234eeaa559aebd0ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf480054cfee5532a412d6a7b9122dc93cea97ea387c6fd8c4547a11df7cd59812d0cf5b5eaf0761c35351b1702b7cb69aef9b52c090049b12db69385ccd2023
|
7
|
+
data.tar.gz: 6fa750e4b084847a1231b201a1759e3c1f334b12b0ca49d5bbdfa86e4b8fdbac2b2ae83377b32603738379261062440eb729fa943d2b7aa2b2906e9d18ec819a
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Chickadee
|
2
|
+
module Repository
|
3
|
+
def self.included(base)
|
4
|
+
base.extend ClassMethods
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def set_hydrator(klass)
|
9
|
+
@hydrator = klass
|
10
|
+
end
|
11
|
+
|
12
|
+
def hydrator
|
13
|
+
@hydrator
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def hydrate(rows)
|
20
|
+
if rows.is_a?(Array)
|
21
|
+
rows.map{|row| hydrate(row)}
|
22
|
+
else
|
23
|
+
hydrator.hydrate(rows)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def hydrator
|
28
|
+
self.class.hydrator || raise(NotImplementedError)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/chickadee/exceptions.rb
CHANGED
data/lib/chickadee/version.rb
CHANGED
data/lib/chickadee.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chickadee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Lott
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ioc
|
@@ -96,12 +96,9 @@ files:
|
|
96
96
|
- chickadee.gemspec
|
97
97
|
- lib/chickadee.rb
|
98
98
|
- lib/chickadee/container.rb
|
99
|
-
- lib/chickadee/
|
99
|
+
- lib/chickadee/domain/repository.rb
|
100
100
|
- lib/chickadee/exceptions.rb
|
101
|
-
- lib/chickadee/handler_chain_struct.rb
|
102
101
|
- lib/chickadee/version.rb
|
103
|
-
- spec/dispatcher_spec.rb
|
104
|
-
- spec/handler_chain_struct_spec.rb
|
105
102
|
- spec/spec_helper.rb
|
106
103
|
homepage: ''
|
107
104
|
licenses:
|
@@ -128,6 +125,4 @@ signing_key:
|
|
128
125
|
specification_version: 4
|
129
126
|
summary: Lightweight domain driven design library
|
130
127
|
test_files:
|
131
|
-
- spec/dispatcher_spec.rb
|
132
|
-
- spec/handler_chain_struct_spec.rb
|
133
128
|
- spec/spec_helper.rb
|
data/lib/chickadee/dispatcher.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module Chickadee
|
2
|
-
class Dispatcher
|
3
|
-
def self.install(*installers)
|
4
|
-
[*installers].inject(new) do |d, installer|
|
5
|
-
installer.install(d)
|
6
|
-
d
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
@container = Container.new
|
12
|
-
@request_map = {}
|
13
|
-
end
|
14
|
-
|
15
|
-
def register(*args)
|
16
|
-
@container.register(*args)
|
17
|
-
end
|
18
|
-
|
19
|
-
def map(request_class, *handlers)
|
20
|
-
raise(DispatcherError, "Request already mapped: #{request_class}") if @request_map.key?(request_class)
|
21
|
-
@request_map[request_class] = Proc.new{|req| resolve_handler_chain(*handlers).handle(req)}
|
22
|
-
end
|
23
|
-
|
24
|
-
def execute(request)
|
25
|
-
@request_map[request.class].call(request)
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def resolve_handler_chain(*handlers)
|
31
|
-
@container.resolve_anonymous(HandlerChainStruct.new(*handlers))
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Chickadee
|
2
|
-
class HandlerChainStruct
|
3
|
-
def self.new(*parameter_names, &block)
|
4
|
-
klass = Class.new(&block)
|
5
|
-
klass.class_eval <<-EOT, __FILE__, __LINE__ + 1
|
6
|
-
def initialize(#{parameter_names.map(&:to_s).join(", ")}) # def initialize(user_repo, session_repo)
|
7
|
-
@handlers = [#{parameter_names.map(&:to_s).join(", ")}] # @handlers = [user_repo, session_repo]
|
8
|
-
end # end
|
9
|
-
|
10
|
-
def handle(request)
|
11
|
-
@handlers.map {|h| h.handle(request)}.last
|
12
|
-
end
|
13
|
-
EOT
|
14
|
-
klass
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/spec/dispatcher_spec.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'chickadee'
|
3
|
-
|
4
|
-
describe Chickadee::Dispatcher do
|
5
|
-
it 'can dispatch a request' do
|
6
|
-
handler = stub(:handle => 'handler response')
|
7
|
-
request_class = Class.new
|
8
|
-
request = request_class.new
|
9
|
-
dispatcher = new_dispatcher
|
10
|
-
|
11
|
-
dispatcher.register(:handler, handler, :as => :instance)
|
12
|
-
dispatcher.map(request_class, :handler)
|
13
|
-
dispatcher.execute(request).must_equal('handler response')
|
14
|
-
end
|
15
|
-
|
16
|
-
def new_dispatcher
|
17
|
-
Chickadee::Dispatcher.new
|
18
|
-
end
|
19
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'chickadee'
|
3
|
-
|
4
|
-
describe Chickadee::HandlerChainStruct do
|
5
|
-
it 'generates handler class' do
|
6
|
-
person_class1 = struct_class.new(:first_name, :last_name)
|
7
|
-
person_class2 = struct_class.new(:first_name, :last_name)
|
8
|
-
person_class1.wont_equal(person_class2)
|
9
|
-
end
|
10
|
-
|
11
|
-
describe 'instance' do
|
12
|
-
describe '#handle' do
|
13
|
-
it 'delegates handle method to handlers in chain' do
|
14
|
-
request = stub
|
15
|
-
handler1 = stub
|
16
|
-
handler2 = stub
|
17
|
-
handler_chain_class = struct_class.new(:handler1, :handler2)
|
18
|
-
handler_chain = handler_chain_class.new(handler1, handler2)
|
19
|
-
|
20
|
-
handler1.expects(:handle).with(request)
|
21
|
-
handler2.expects(:handle).with(request)
|
22
|
-
handler_chain.handle(request)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def struct_class
|
28
|
-
Chickadee::HandlerChainStruct
|
29
|
-
end
|
30
|
-
end
|