chickadee 3.0.0 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|