curly-templates 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,7 +4,7 @@ Gem::Specification.new do |s|
4
4
  s.rubygems_version = '1.3.5'
5
5
 
6
6
  s.name = 'curly-templates'
7
- s.version = '0.3.1'
7
+ s.version = '0.4.0'
8
8
  s.date = '2013-04-18'
9
9
 
10
10
  s.summary = "Free your views!"
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.3.1"
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
- if presenter.method_available?(:#{reference})
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.3.1
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: -1940230651346147654
145
+ hash: 2429714789931258072
146
146
  required_rubygems_version: !ruby/object:Gem::Requirement
147
147
  none: false
148
148
  requirements: