braai 1.4.0 → 1.4.1
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/base.rb +16 -4
- data/lib/braai/matchers.rb +6 -2
- data/lib/braai/version.rb +1 -1
- data/spec/braai/handlers/base_spec.rb +32 -6
- metadata +2 -2
data/Gemfile.lock
CHANGED
data/lib/braai/handlers/base.rb
CHANGED
@@ -10,27 +10,39 @@ module Braai::Handlers
|
|
10
10
|
|
11
11
|
class << self
|
12
12
|
|
13
|
+
attr_accessor :error_handler, :nomatch_handler
|
14
|
+
|
13
15
|
def call(template, key, matches)
|
14
16
|
handler = self.new(template, key, matches)
|
15
17
|
handler.safe_perform
|
16
18
|
end
|
17
|
-
|
18
19
|
end
|
19
20
|
|
20
21
|
def safe_perform
|
21
|
-
begin
|
22
|
+
value = begin
|
22
23
|
perform
|
23
24
|
rescue => e
|
24
25
|
rescue_from_error(e)
|
25
26
|
end
|
27
|
+
|
28
|
+
if [key, nil].include?(value) && self.class.nomatch_handler
|
29
|
+
value = self.class.nomatch_handler.call(key)
|
30
|
+
end
|
31
|
+
|
32
|
+
value
|
26
33
|
end
|
27
34
|
|
35
|
+
# override this method in your own handlers
|
28
36
|
def perform
|
29
|
-
|
37
|
+
key
|
30
38
|
end
|
31
39
|
|
32
40
|
def rescue_from_error(e)
|
33
|
-
|
41
|
+
if self.class.error_handler
|
42
|
+
self.class.error_handler.call(e)
|
43
|
+
else
|
44
|
+
key
|
45
|
+
end
|
34
46
|
end
|
35
47
|
end
|
36
48
|
end
|
data/lib/braai/matchers.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
module Braai::Matchers
|
2
2
|
|
3
|
+
IterationMatcher = /({{\s*for (\w+) in (\w+)\s*}}(.+?){{\s*\/for\s*}})/im
|
4
|
+
DefaultMatcher = /({{\s*([\w\.]+)\s*}})/i
|
5
|
+
RegionMatcher = /({{\s*([\w]+)\s*}}(.*){{\s*\/([\w]+)\s*}})/mi
|
6
|
+
|
3
7
|
def matchers
|
4
8
|
@matchers ||= reset!
|
5
9
|
end
|
@@ -22,8 +26,8 @@ module Braai::Matchers
|
|
22
26
|
end
|
23
27
|
|
24
28
|
def set_defaults
|
25
|
-
map(
|
26
|
-
map(
|
29
|
+
map(IterationMatcher, Braai::Handlers::Iteration)
|
30
|
+
map(DefaultMatcher, Braai::Handlers::Default)
|
27
31
|
end
|
28
32
|
|
29
33
|
end
|
data/lib/braai/version.rb
CHANGED
@@ -11,6 +11,11 @@ describe Braai::Handlers::Base do
|
|
11
11
|
let(:matches) { [ "{{ person.name }}", "name" ] }
|
12
12
|
let(:handler) { Braai::Handlers::Base.new(template, key, matches) }
|
13
13
|
|
14
|
+
before do
|
15
|
+
Braai::Handlers::Base.error_handler = nil
|
16
|
+
Braai::Handlers::Base.nomatch_handler = nil
|
17
|
+
end
|
18
|
+
|
14
19
|
describe '.call' do
|
15
20
|
|
16
21
|
it 'condition' do
|
@@ -32,8 +37,8 @@ describe Braai::Handlers::Base do
|
|
32
37
|
|
33
38
|
describe '#perform' do
|
34
39
|
|
35
|
-
it 'returns the
|
36
|
-
handler.perform.must_equal("
|
40
|
+
it 'returns the key by default (should be overridden in implementations)' do
|
41
|
+
handler.perform.must_equal("{{ person.name }}")
|
37
42
|
end
|
38
43
|
end
|
39
44
|
|
@@ -44,16 +49,37 @@ describe Braai::Handlers::Base do
|
|
44
49
|
handler.safe_perform
|
45
50
|
end
|
46
51
|
|
47
|
-
it '
|
52
|
+
it 'rescues from error when needed' do
|
48
53
|
handler.stubs(:perform).raises(ArgumentError)
|
49
|
-
handler.
|
54
|
+
handler.expects(:rescue_from_error).returns('<!-- foo -->')
|
55
|
+
handler.safe_perform.must_equal('<!-- foo -->')
|
56
|
+
end
|
57
|
+
|
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 }} -->")
|
50
61
|
end
|
51
62
|
end
|
52
63
|
|
53
64
|
describe '#rescue_from_error' do
|
54
65
|
|
55
|
-
it '
|
56
|
-
handler.rescue_from_error(ArgumentError).must_equal('
|
66
|
+
it 'defaults to returning the unmodified template' do
|
67
|
+
handler.rescue_from_error(ArgumentError).must_equal('{{ person.name }}')
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'calls a user-defined error handler if specified' do
|
71
|
+
Braai::Handlers::Base.error_handler = ->(e) { "<!-- #{key} -->" }
|
72
|
+
handler.rescue_from_error(ArgumentError).must_equal('<!-- {{ person.name }} -->')
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe 'default template rendering' do
|
77
|
+
|
78
|
+
it 'performs no substitution' do
|
79
|
+
Braai::Template.clear!
|
80
|
+
Braai::Template.map(Braai::Matchers::DefaultMatcher, Braai::Handlers::Base)
|
81
|
+
res = Braai::Template.new("{{ greet }} my name is {{ name }}").render(greet: "Hello")
|
82
|
+
res.must_equal("{{ greet }} my name is {{ name }}")
|
57
83
|
end
|
58
84
|
end
|
59
85
|
end
|
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.
|
4
|
+
version: 1.4.1
|
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-
|
12
|
+
date: 2013-02-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|