adapter-registry 0.0.2 → 0.0.3
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/Gemfile +6 -0
- data/Gemfile.lock +20 -0
- data/Rakefile +7 -0
- data/adapter-registry.gemspec +4 -0
- data/lib/adapter-registry/registry.rb +1 -1
- data/lib/adapter-registry/version.rb +1 -1
- data/spec/lib/adapter_spec.rb +74 -0
- data/spec/spec_helper.rb +1 -0
- metadata +35 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7796c4ac33f5adc47cdc63953cd67b9401a19e24
|
4
|
+
data.tar.gz: ae1834d08824aecff7f61ea81376283e547350a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d25dde2668f6c8c26168dfa1413831461b1c830af432174b713fc3855239210305fbb6a8bc7213c67212e6fe6e68e815a566f81c1daff53029c014e5a31ae190
|
7
|
+
data.tar.gz: e57bc5c15975af650fe03d1b0d08c9340bf0795a030db72143fd2542d62303239961847ee2e76e48039a0c5eb9e6f8dc0523bc792a692cd7a62741c4a7b813e9
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
diff-lcs (1.2.4)
|
5
|
+
rake (10.1.0)
|
6
|
+
rspec (2.14.0)
|
7
|
+
rspec-core (~> 2.14.0)
|
8
|
+
rspec-expectations (~> 2.14.0)
|
9
|
+
rspec-mocks (~> 2.14.0)
|
10
|
+
rspec-core (2.14.2)
|
11
|
+
rspec-expectations (2.14.0)
|
12
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
13
|
+
rspec-mocks (2.14.1)
|
14
|
+
|
15
|
+
PLATFORMS
|
16
|
+
ruby
|
17
|
+
|
18
|
+
DEPENDENCIES
|
19
|
+
rake
|
20
|
+
rspec
|
data/Rakefile
ADDED
data/adapter-registry.gemspec
CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.description = "Simple adapter registry"
|
15
15
|
s.email = "gems [a] radarservices [d] com"
|
16
16
|
s.files = `git ls-files`.split("\n").reject { |file| file == '.gitignore' }
|
17
|
+
s.test_files = `git ls-files -- {spec}/*`.split("\n")
|
17
18
|
s.extra_rdoc_files = %w[LICENSE README.md]
|
18
19
|
|
19
20
|
s.homepage = "http://github.com/rs-dev/adapter-registry"
|
@@ -21,4 +22,7 @@ Gem::Specification.new do |s|
|
|
21
22
|
# s.rubygems_version = "1.8.24"
|
22
23
|
s.summary = "Simple adapter registry for enhancing classes via adapters"
|
23
24
|
s.license = "ISC"
|
25
|
+
|
26
|
+
s.add_development_dependency(%q<rake>)
|
27
|
+
s.add_development_dependency(%q<rspec>)
|
24
28
|
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class Foo
|
4
|
+
include AdapterRegistry::Implementation
|
5
|
+
end
|
6
|
+
|
7
|
+
class Bar
|
8
|
+
end
|
9
|
+
|
10
|
+
describe AdapterRegistry do
|
11
|
+
let(:registry) { AdapterRegistry::Registry.new }
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
AdapterRegistry.stub(:registry).and_return(registry)
|
15
|
+
end
|
16
|
+
|
17
|
+
context "implements" do
|
18
|
+
it "stores an list of traits on the adapter class" do
|
19
|
+
Foo.implements(:a, :b)
|
20
|
+
Foo.traits.should eq([:a, :b])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "adapts" do
|
25
|
+
it "creates a registry entry" do
|
26
|
+
Foo.should_receive(:traits).twice.and_return([:trait])
|
27
|
+
fn = Proc.new {}
|
28
|
+
Foo.adapts(&fn)
|
29
|
+
registry.should eq({trait: Set.new([{adapter: Foo, for: fn}])})
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "adapts_instance" do
|
34
|
+
it "adapts an instance" do
|
35
|
+
class Frobnicator < Foo
|
36
|
+
implements :frobnication
|
37
|
+
end
|
38
|
+
Frobnicator.adapts_instance(Foo)
|
39
|
+
registry.get_adapter(:frobnication, Foo.new).should eq(Frobnicator)
|
40
|
+
registry.get_adapter(:frobnication, Foo).should_not eq(Frobnicator)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "adapts_class" do
|
45
|
+
it "adapts a class" do
|
46
|
+
class Frobnicator < Foo
|
47
|
+
implements :frobnication
|
48
|
+
end
|
49
|
+
Frobnicator.adapts_class(Foo)
|
50
|
+
registry.get_adapter(:frobnication, Foo.new).should_not eq(Frobnicator)
|
51
|
+
registry.get_adapter(:frobnication, Foo).should eq(Frobnicator)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context "registry" do
|
56
|
+
it "provides means to register an adapter" do
|
57
|
+
fn = Proc.new {}
|
58
|
+
registry.set(:trait, Foo, &fn)
|
59
|
+
registry.should eq({trait: Set.new([{adapter: Foo, for: fn}])})
|
60
|
+
end
|
61
|
+
|
62
|
+
it "provides means to query for an adapter providing a match block" do
|
63
|
+
registry.set(:trait, Foo) { |context| context.is_a?(Bar) }
|
64
|
+
registry.get_adapter(:trait, Bar.new).should eq(Foo)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "provides means to automatically initialize a queried adapter" do
|
68
|
+
bar = Bar.new
|
69
|
+
registry.set(:trait, Foo) { |context| context.is_a?(Bar) }
|
70
|
+
Foo.should_receive(:instance_for).with(bar)
|
71
|
+
registry.get(:trait, bar)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'adapter-registry'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adapter-registry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Kopecky <andreas.kopecky@radarservices.com>
|
@@ -11,7 +11,35 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
date: 2013-07-10 00:00:00.000000000 Z
|
14
|
-
dependencies:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rake
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - '>='
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '0'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: rspec
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
15
43
|
description: Simple adapter registry
|
16
44
|
email: gems [a] radarservices [d] com
|
17
45
|
executables: []
|
@@ -20,13 +48,18 @@ extra_rdoc_files:
|
|
20
48
|
- LICENSE
|
21
49
|
- README.md
|
22
50
|
files:
|
51
|
+
- Gemfile
|
52
|
+
- Gemfile.lock
|
23
53
|
- LICENSE
|
24
54
|
- README.md
|
55
|
+
- Rakefile
|
25
56
|
- adapter-registry.gemspec
|
26
57
|
- lib/adapter-registry.rb
|
27
58
|
- lib/adapter-registry/implementation.rb
|
28
59
|
- lib/adapter-registry/registry.rb
|
29
60
|
- lib/adapter-registry/version.rb
|
61
|
+
- spec/lib/adapter_spec.rb
|
62
|
+
- spec/spec_helper.rb
|
30
63
|
homepage: http://github.com/rs-dev/adapter-registry
|
31
64
|
licenses:
|
32
65
|
- ISC
|