curly-templates 0.3.1 → 0.4.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/curly-templates.gemspec +1 -1
- data/lib/curly.rb +13 -6
- data/spec/curly_spec.rb +13 -1
- metadata +2 -2
data/curly-templates.gemspec
CHANGED
data/lib/curly.rb
CHANGED
@@ -26,9 +26,9 @@
|
|
26
26
|
# See Curly::Presenter for more information on presenters.
|
27
27
|
#
|
28
28
|
module Curly
|
29
|
-
VERSION = "0.
|
29
|
+
VERSION = "0.4.0"
|
30
30
|
|
31
|
-
REFERENCE_REGEX = %r(\{\{(\w+)\}\})
|
31
|
+
REFERENCE_REGEX = %r(\{\{([\w\.]+)\}\})
|
32
32
|
|
33
33
|
class InvalidReference < StandardError
|
34
34
|
end
|
@@ -63,13 +63,20 @@ module Curly
|
|
63
63
|
private
|
64
64
|
|
65
65
|
def compile_reference(reference)
|
66
|
+
method, argument = reference.split(".", 2)
|
67
|
+
|
66
68
|
%(\#{
|
67
|
-
|
68
|
-
result = presenter.#{reference} {|*args| yield(*args) }
|
69
|
-
ERB::Util.html_escape(result)
|
70
|
-
else
|
69
|
+
unless presenter.method_available?(:#{method})
|
71
70
|
raise Curly::InvalidReference, "invalid reference `{{#{reference}}}'"
|
72
71
|
end
|
72
|
+
|
73
|
+
if presenter.method(:#{method}).arity == 1
|
74
|
+
result = presenter.#{method}(#{argument.inspect}) {|*args| yield(*args) }
|
75
|
+
else
|
76
|
+
result = presenter.#{method} {|*args| yield(*args) }
|
77
|
+
end
|
78
|
+
|
79
|
+
ERB::Util.html_escape(result)
|
73
80
|
})
|
74
81
|
end
|
75
82
|
|
data/spec/curly_spec.rb
CHANGED
@@ -20,8 +20,12 @@ describe Curly do
|
|
20
20
|
"UNICORN"
|
21
21
|
end
|
22
22
|
|
23
|
+
def parameterized(value)
|
24
|
+
value
|
25
|
+
end
|
26
|
+
|
23
27
|
def method_available?(method)
|
24
|
-
[:foo, :high_yield, :yield_value, :dirty].include?(method)
|
28
|
+
[:foo, :parameterized, :high_yield, :yield_value, :dirty].include?(method)
|
25
29
|
end
|
26
30
|
|
27
31
|
def self.available_methods
|
@@ -42,6 +46,14 @@ describe Curly do
|
|
42
46
|
evaluate("{{foo}}").should == "FOO"
|
43
47
|
end
|
44
48
|
|
49
|
+
it "passes on an optional reference parameter to the presenter method" do
|
50
|
+
evaluate("{{parameterized.foo.bar}}").should == "foo.bar"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "passes an empty string to methods that take a parameter when none is provided" do
|
54
|
+
evaluate("{{parameterized}}").should == ""
|
55
|
+
end
|
56
|
+
|
45
57
|
it "makes sure only public methods are called on the presenter object" do
|
46
58
|
expect { evaluate("{{bar}}") }.to raise_exception(Curly::InvalidReference)
|
47
59
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: curly-templates
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -142,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
142
142
|
version: '0'
|
143
143
|
segments:
|
144
144
|
- 0
|
145
|
-
hash:
|
145
|
+
hash: 2429714789931258072
|
146
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
147
|
none: false
|
148
148
|
requirements:
|