ianwhite-hark 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.
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 1.8.7
5
+ - 1.9.3
6
+ - 2.0.0
data/README.md CHANGED
@@ -6,7 +6,7 @@ Create an ad-hoc listener object with hark.
6
6
 
7
7
  Add this line to your application's Gemfile:
8
8
 
9
- gem 'ianwhite-hark'
9
+ gem 'ianwhite-hark', :require => 'hark'
10
10
 
11
11
  And then execute:
12
12
 
data/hark.gemspec CHANGED
@@ -9,17 +9,16 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Ian White"]
10
10
  spec.email = ["ian.w.white@gmail.com"]
11
11
  spec.description = %q{Create ad-hoc listener objects with impunity}
12
- spec.summary = %q{Hark is a gem that enables writing code in a 'hexagonal architecture' style}
12
+ spec.summary = %q{Hark is a gem that enables writing code in a "hexagonal architecture" or "tell don't ask" style}
13
13
  spec.homepage = "http://github.com/ianwhite/hark"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.test_files = spec.files.grep(%r{^(test|spec)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
- spec.add_development_dependency "rspec-given"
24
- spec.add_development_dependency "guard-rspec"
23
+ spec.add_development_dependency "rspec"
25
24
  end
data/lib/hark/ad_hoc.rb CHANGED
@@ -29,6 +29,7 @@ module Hark
29
29
  end
30
30
 
31
31
  def add_method!(method, &body)
32
+ singleton_class = class << self; self; end
32
33
  singleton_class.send(:define_method, method) {|*args, &block| body.call(*args, &block) }
33
34
  end
34
35
 
@@ -45,9 +45,11 @@ module Hark
45
45
  end
46
46
 
47
47
  def handle method, *args, &block
48
- handlers.each_with_object([]) do |handler, results|
48
+ results = []
49
+ handlers.each do |handler|
49
50
  results << handler.send(method, *args, &block) if handler.respond_to?(method)
50
51
  end
52
+ results
51
53
  end
52
54
  end
53
55
  end
data/lib/hark/listener.rb CHANGED
@@ -32,17 +32,22 @@ module Hark
32
32
  end
33
33
 
34
34
  class StrictListener < Listener
35
- def respond_to_missing? method, *args
36
- dispatcher.handles?(method) || super
35
+ def respond_to?(method, *args)
36
+ super || dispatcher.handles?(method)
37
37
  end
38
38
 
39
39
  def method_missing *args, &block
40
- (results = dispatcher.handle(*args, &block)).any? ? results : super
40
+ results = dispatcher.handle(*args, &block)
41
+ if results.length > 0
42
+ results
43
+ else
44
+ super
45
+ end
41
46
  end
42
47
  end
43
48
 
44
49
  class LaxListener < Listener
45
- def respond_to_missing? *args
50
+ def respond_to? *args
46
51
  true
47
52
  end
48
53
 
data/lib/hark/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hark
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/spec/hark_spec.rb CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
  require 'hark'
3
3
 
4
4
  describe Hark do
5
- Given(:transcript) { [] }
5
+ let(:transcript) { [] }
6
6
 
7
7
  class PlainListener < Struct.new(:transcript)
8
8
  def success(value)
@@ -16,54 +16,54 @@ describe Hark do
16
16
 
17
17
  shared_examples_for "a success/failure listener" do
18
18
  describe "success" do
19
- When { listener.success(42) }
20
- Then { transcript == [[:succeeded, 42]] }
19
+ before { listener.success(42) }
20
+ it { transcript.should == [[:succeeded, 42]] }
21
21
  end
22
22
 
23
23
  describe "failure" do
24
- When { listener.failure(54) }
25
- Then { transcript == [[:failed, 54]] }
24
+ before { listener.failure(54) }
25
+ it { transcript.should == [[:failed, 54]] }
26
26
  end
27
27
  end
28
28
 
29
29
  shared_examples_for "a strict listener" do
30
- Then { ! strict_listener.respond_to?(:unknown) }
31
- And { (strict_listener.unknown rescue $!).is_a?(NoMethodError) }
30
+ it { strict_listener.should_not respond_to(:unknown) }
31
+ it { expect{ strict_listener.unknown }.to raise_error(NoMethodError) }
32
32
  end
33
33
 
34
34
  shared_examples_for "a lax listener" do
35
- Then { lax_listener.respond_to?(:unknown) }
36
- And { lax_listener.unknown == [] }
35
+ it { lax_listener.should respond_to(:unknown) }
36
+ it { lax_listener.unknown.should == [] }
37
37
  end
38
38
 
39
39
  shared_examples_for "a success/failure hark listener" do
40
40
  it_should_behave_like "a success/failure listener"
41
41
  it_should_behave_like "a strict listener" do
42
- Given(:strict_listener) { listener }
42
+ let(:strict_listener) { listener }
43
43
  end
44
44
 
45
45
  context "when made lax" do
46
- Given(:lax_listener) { listener.lax }
46
+ let(:lax_listener) { listener.lax }
47
47
  it_should_behave_like "a lax listener"
48
48
 
49
49
  context "and made strict again" do
50
- Given(:strict_listener) { lax_listener.strict }
50
+ let(:strict_listener) { lax_listener.strict }
51
51
  it_should_behave_like "a strict listener"
52
52
  end
53
53
  end
54
54
  end
55
55
 
56
56
  describe "A plain (non hark) listener object" do
57
- Given(:listener) { PlainListener.new(transcript) }
57
+ let(:listener) { PlainListener.new(transcript) }
58
58
 
59
59
  it_should_behave_like "a success/failure listener"
60
60
  it_should_behave_like "a strict listener" do
61
- Given(:strict_listener) { listener }
61
+ let(:strict_listener) { listener }
62
62
  end
63
63
  end
64
64
 
65
65
  describe "hark with respond_to style block" do
66
- Given(:listener) do
66
+ let(:listener) do
67
67
  hark do |on|
68
68
  on.success {|v| transcript.push [:succeeded, v] }
69
69
  on.failure {|v| transcript.push [:failed, v] }
@@ -74,15 +74,15 @@ describe Hark do
74
74
  end
75
75
 
76
76
  describe "hark with callables" do
77
- Given(:listener) do
78
- hark success: ->(v){ transcript.push [:succeeded, v] }, failure: ->(v){ transcript.push [:failed, v] }
77
+ let(:listener) do
78
+ hark :success => lambda{|v| transcript.push [:succeeded, v] }, :failure => lambda{|v| transcript.push [:failed, v] }
79
79
  end
80
80
 
81
81
  it_should_behave_like "a success/failure hark listener"
82
82
  end
83
83
 
84
84
  describe "hark built up in steps" do
85
- Given(:listener) do
85
+ let(:listener) do
86
86
  l = hark
87
87
  l = l.hark(:success) {|v| transcript.push [:succeeded, v] }
88
88
  l = l.hark(:failure) {|v| transcript.push [:failed, v] }
@@ -92,24 +92,31 @@ describe Hark do
92
92
  end
93
93
 
94
94
  describe "hark object" do
95
- Given(:listener) { hark PlainListener.new(transcript) }
95
+ let(:listener) { hark PlainListener.new(transcript) }
96
96
 
97
97
  it_should_behave_like "a success/failure hark listener"
98
98
  end
99
99
 
100
100
  describe "combine two listeners together" do
101
- Given(:logger) { hark(:signup_user) {|user| transcript << "User #{user} signed up" } }
102
- Given(:emailer) { hark(:signup_user) {|user| transcript << "Emailed #{user}" } }
101
+ let(:logger) { hark(:signup_user) {|user| transcript << "User #{user} signed up" } }
102
+ let(:emailer) { hark(:signup_user) {|user| transcript << "Emailed #{user}" } }
103
103
 
104
- Given(:listener) { logger.hark(emailer) }
104
+ let(:listener) { logger.hark(emailer) }
105
105
 
106
- When { listener.signup_user("Fred") }
106
+ before { listener.signup_user("Fred") }
107
107
 
108
- Then { transcript == ["User Fred signed up", "Emailed Fred"] }
108
+ it { transcript.should == ["User Fred signed up", "Emailed Fred"] }
109
109
  end
110
110
 
111
111
  describe "lax/strict is preserved on #hark" do
112
- Then { hark.lax.hark.is_a? Hark::LaxListener }
113
- Then { hark.strict.hark.is_a? Hark::StrictListener }
112
+ it { hark.lax.hark.should be_a Hark::LaxListener }
113
+ it { hark.strict.hark.should be_a Hark::StrictListener }
114
+ end
115
+
116
+ describe "when methods return falsy" do
117
+ let(:listener) { hark(:foo) { false } }
118
+
119
+ it { expect{ listener.foo }.to_not raise_error }
120
+ it { listener.foo.should == [false] }
114
121
  end
115
122
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  $LOAD_PATH.unshift File.dirname('../lib')
2
2
 
3
- require 'rspec/given'
3
+ require 'rspec'
metadata CHANGED
@@ -1,81 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ianwhite-hark
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Ian White
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
- date: 2013-10-24 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-11-14 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
14
21
  name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
17
25
  - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :development
26
+ - !ruby/object:Gem::Version
27
+ hash: 9
28
+ segments:
29
+ - 1
30
+ - 3
31
+ version: "1.3"
21
32
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '1.3'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
33
  type: :development
34
+ requirement: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rake
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
35
46
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec-given
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
47
  type: :development
48
+ requirement: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: rspec
51
+ version_requirements: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
49
60
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: guard-rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
61
  type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
62
+ requirement: *id003
69
63
  description: Create ad-hoc listener objects with impunity
70
- email:
64
+ email:
71
65
  - ian.w.white@gmail.com
72
66
  executables: []
67
+
73
68
  extensions: []
69
+
74
70
  extra_rdoc_files: []
75
- files:
71
+
72
+ files:
76
73
  - .gitignore
74
+ - .travis.yml
77
75
  - Gemfile
78
- - Guardfile
79
76
  - LICENSE.txt
80
77
  - README.md
81
78
  - Rakefile
@@ -89,29 +86,38 @@ files:
89
86
  - spec/hark_spec.rb
90
87
  - spec/spec_helper.rb
91
88
  homepage: http://github.com/ianwhite/hark
92
- licenses:
89
+ licenses:
93
90
  - MIT
94
- metadata: {}
95
91
  post_install_message:
96
92
  rdoc_options: []
97
- require_paths:
93
+
94
+ require_paths:
98
95
  - lib
99
- required_ruby_version: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- required_rubygems_version: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - '>='
107
- - !ruby/object:Gem::Version
108
- version: '0'
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ hash: 3
111
+ segments:
112
+ - 0
113
+ version: "0"
109
114
  requirements: []
115
+
110
116
  rubyforge_project:
111
- rubygems_version: 2.0.6
117
+ rubygems_version: 1.8.25
112
118
  signing_key:
113
- specification_version: 4
114
- summary: Hark is a gem that enables writing code in a 'hexagonal architecture' style
115
- test_files:
119
+ specification_version: 3
120
+ summary: Hark is a gem that enables writing code in a "hexagonal architecture" or "tell don't ask" style
121
+ test_files:
116
122
  - spec/hark_spec.rb
117
123
  - spec/spec_helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 257615d2c004b4af5d262c95bc085cc04a20113c
4
- data.tar.gz: 6b53aeb761b46d56f932fe054866142f2e7b8657
5
- SHA512:
6
- metadata.gz: c003deb6ef1d73e06cf9d06e17f06abc56d9ed99f6ca44b29eec664f51d4f0a9b3363c8d347e3dbac632419e8c891b1dcdb97d70af37285e8b6e7bb7b4109c6d
7
- data.tar.gz: 0efa1f2ac66c433f8fb1b90d271dedfe135c995ef1300aa61c8fa63232731392460c308662d26b2db382cdbab5a478f6fced2ec7737f46721952301bc0ae3d78
data/Guardfile DELETED
@@ -1,9 +0,0 @@
1
- # A sample Guardfile
2
- # More info at https://github.com/guard/guard#readme
3
-
4
- guard :rspec, all_on_start: true do
5
- watch(%r{^spec/.+_spec\.rb$})
6
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
7
- watch('spec/spec_helper.rb') { "spec" }
8
- end
9
-