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 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