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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c871897239bb45e6e02e54b6eb1d12685cc0f2d
4
- data.tar.gz: 58f8f9827a25bdf7de346254a4d3753be532b2cd
3
+ metadata.gz: 1726fc032c2d71a1ca06823ada526e2ef3aee649
4
+ data.tar.gz: 2d5b8838ff00426a79917c7234eeaa559aebd0ee
5
5
  SHA512:
6
- metadata.gz: bdd719125dd3d7dd02c80475da5ea912d5e1ece40a473a505438af97343721cd4c564823a93502e154d015fc062aaed6ef5e34ea1ba3b160c55eb84ecb491e14
7
- data.tar.gz: 0de3dc3407af9782b8a310e27ecc3678422c8dd50e6f743f5d1c9cfd5b74b99b0ecf2aa54da3003fa8596c5b64bead96c97cb811f9a34ab99c0c1ed44045a28b
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
@@ -1,5 +1,3 @@
1
1
  module Chickadee
2
2
  class ChickadeeError < StandardError; end
3
- class DispatcherError < ChickadeeError; end
4
- class HandlerNotFound < ChickadeeError; end
5
3
  end
@@ -1,3 +1,3 @@
1
1
  module Chickadee
2
- VERSION = "3.0.0"
2
+ VERSION = "5.0.0"
3
3
  end
data/lib/chickadee.rb CHANGED
@@ -2,8 +2,7 @@ require 'ioc'
2
2
  require 'chickadee/version'
3
3
  require 'chickadee/exceptions'
4
4
  require 'chickadee/container'
5
- require 'chickadee/handler_chain_struct'
6
- require 'chickadee/dispatcher'
5
+ require 'chickadee/domain/repository'
7
6
 
8
7
  module Chickadee
9
8
  end
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: 3.0.0
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-02-28 00:00:00.000000000 Z
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/dispatcher.rb
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
@@ -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
@@ -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