braai 1.4.1 → 1.5.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.
- data/Gemfile.lock +1 -1
- data/lib/braai/handlers.rb +16 -0
- data/lib/braai/handlers/base.rb +10 -11
- data/lib/braai/version.rb +1 -1
- data/spec/braai/handlers/base_spec.rb +15 -11
- metadata +2 -2
data/Gemfile.lock
CHANGED
data/lib/braai/handlers.rb
CHANGED
@@ -1,3 +1,19 @@
|
|
1
1
|
require 'braai/handlers/base'
|
2
2
|
require 'braai/handlers/default'
|
3
3
|
require 'braai/handlers/iteration'
|
4
|
+
|
5
|
+
module Braai
|
6
|
+
module Handlers
|
7
|
+
|
8
|
+
class << self
|
9
|
+
def rescue_from(klass, handler)
|
10
|
+
self.rescuers.unshift({klass: klass, handler: handler})
|
11
|
+
end
|
12
|
+
|
13
|
+
def rescuers
|
14
|
+
@rescuers ||= []
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
data/lib/braai/handlers/base.rb
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
+
# Braai.rescue_from Exception, ->{}
|
2
|
+
# Braai.rescue_from ArgumentError, ->{}
|
3
|
+
|
4
|
+
|
1
5
|
module Braai::Handlers
|
6
|
+
|
2
7
|
class Base
|
3
8
|
attr_accessor :template, :key, :matches
|
4
9
|
|
@@ -10,8 +15,6 @@ module Braai::Handlers
|
|
10
15
|
|
11
16
|
class << self
|
12
17
|
|
13
|
-
attr_accessor :error_handler, :nomatch_handler
|
14
|
-
|
15
18
|
def call(template, key, matches)
|
16
19
|
handler = self.new(template, key, matches)
|
17
20
|
handler.safe_perform
|
@@ -24,11 +27,6 @@ module Braai::Handlers
|
|
24
27
|
rescue => e
|
25
28
|
rescue_from_error(e)
|
26
29
|
end
|
27
|
-
|
28
|
-
if [key, nil].include?(value) && self.class.nomatch_handler
|
29
|
-
value = self.class.nomatch_handler.call(key)
|
30
|
-
end
|
31
|
-
|
32
30
|
value
|
33
31
|
end
|
34
32
|
|
@@ -38,11 +36,12 @@ module Braai::Handlers
|
|
38
36
|
end
|
39
37
|
|
40
38
|
def rescue_from_error(e)
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
Braai::Handlers.rescuers.each do |rescuer|
|
40
|
+
if e.is_a?(rescuer[:klass])
|
41
|
+
return rescuer[:handler].call(self)
|
42
|
+
end
|
45
43
|
end
|
44
|
+
raise e
|
46
45
|
end
|
47
46
|
end
|
48
47
|
end
|
data/lib/braai/version.rb
CHANGED
@@ -12,8 +12,7 @@ describe Braai::Handlers::Base do
|
|
12
12
|
let(:handler) { Braai::Handlers::Base.new(template, key, matches) }
|
13
13
|
|
14
14
|
before do
|
15
|
-
Braai::Handlers
|
16
|
-
Braai::Handlers::Base.nomatch_handler = nil
|
15
|
+
Braai::Handlers.rescuers.clear
|
17
16
|
end
|
18
17
|
|
19
18
|
describe '.call' do
|
@@ -55,22 +54,27 @@ describe Braai::Handlers::Base do
|
|
55
54
|
handler.safe_perform.must_equal('<!-- foo -->')
|
56
55
|
end
|
57
56
|
|
58
|
-
it 'falls back on an optional nomatch handler' do
|
59
|
-
Braai::Handlers::Base.nomatch_handler = ->(value) { "<!-- no match for #{value} -->" }
|
60
|
-
handler.safe_perform.must_equal("<!-- no match for {{ person.name }} -->")
|
61
|
-
end
|
62
57
|
end
|
63
58
|
|
64
59
|
describe '#rescue_from_error' do
|
65
60
|
|
66
|
-
it '
|
67
|
-
|
61
|
+
it 'calls a user-defined error handler if specified' do
|
62
|
+
Braai::Handlers.rescue_from ArgumentError, ->(e) { "<!-- #{key} -->" }
|
63
|
+
handler.rescue_from_error(ArgumentError.new).must_equal('<!-- {{ person.name }} -->')
|
68
64
|
end
|
69
65
|
|
70
|
-
it
|
71
|
-
|
72
|
-
|
66
|
+
it "raises the error if there is not rescuer" do
|
67
|
+
->{
|
68
|
+
handler.rescue_from_error(ArgumentError.new)
|
69
|
+
}.must_raise(ArgumentError)
|
73
70
|
end
|
71
|
+
|
72
|
+
it "stops after the first matching rescuer" do
|
73
|
+
Braai::Handlers.rescue_from Exception, ->(e) { "!!! #{key} !!!" }
|
74
|
+
Braai::Handlers.rescue_from ArgumentError, ->(e) { "<!-- #{key} -->" }
|
75
|
+
handler.rescue_from_error(ArgumentError.new).must_equal('<!-- {{ person.name }} -->')
|
76
|
+
end
|
77
|
+
|
74
78
|
end
|
75
79
|
|
76
80
|
describe 'default template rendering' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: braai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|