mustache 0.2.1 → 0.2.2
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/HISTORY.md +6 -0
- data/README.md +9 -9
- data/benchmarks/speed.rb +6 -4
- data/examples/passenger.rb +1 -3
- data/lib/mustache/template.rb +1 -1
- data/lib/mustache/version.rb +1 -1
- data/test/mustache_test.rb +22 -1
- metadata +1 -1
data/HISTORY.md
CHANGED
data/README.md
CHANGED
@@ -169,20 +169,20 @@ Dict-Style Views
|
|
169
169
|
----------------
|
170
170
|
|
171
171
|
ctemplate and friends want you to hand a dictionary to the template
|
172
|
-
processor.
|
173
|
-
|
172
|
+
processor. Mustache supports a similar concept. Feel free to mix the
|
173
|
+
class-based and this more procedural style at your leisure.
|
174
174
|
|
175
|
-
Given this template (
|
175
|
+
Given this template (winner.html):
|
176
176
|
|
177
177
|
Hello {{name}}
|
178
178
|
You have just won ${{value}}!
|
179
179
|
|
180
180
|
We can fill in the values at will:
|
181
181
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
182
|
+
view = Winner.new
|
183
|
+
view[:name] = 'George'
|
184
|
+
view[:value] = 100
|
185
|
+
view.render
|
186
186
|
|
187
187
|
Which returns:
|
188
188
|
|
@@ -191,8 +191,8 @@ Which returns:
|
|
191
191
|
|
192
192
|
We can re-use the same object, too:
|
193
193
|
|
194
|
-
|
195
|
-
|
194
|
+
view[:name] = 'Tony'
|
195
|
+
view.render
|
196
196
|
Hello Tony
|
197
197
|
You have just won $100!
|
198
198
|
|
data/benchmarks/speed.rb
CHANGED
@@ -15,8 +15,10 @@ unless ENV['NOERB']
|
|
15
15
|
erb.result(ComplexView.new.send(:binding))
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
ERB
|
18
|
+
unless ENV['CACHED']
|
19
|
+
bench 'ERB w/o caching' do
|
20
|
+
ERB.new(template).result(ComplexView.new.send(:binding))
|
21
|
+
end
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
@@ -35,14 +37,14 @@ items << { :name => 'blue', :current => false, :url => '#Blue' }
|
|
35
37
|
|
36
38
|
tpl[:item] = items
|
37
39
|
|
38
|
-
bench '{
|
40
|
+
bench '{ w/ caching' do
|
39
41
|
tpl.to_html
|
40
42
|
end
|
41
43
|
|
42
44
|
content = File.read(ComplexView.template_file)
|
43
45
|
|
44
46
|
unless ENV['CACHED']
|
45
|
-
bench '{
|
47
|
+
bench '{ w/o caching' do
|
46
48
|
ctpl = ComplexView.new
|
47
49
|
ctpl.template = content
|
48
50
|
ctpl[:item] = items
|
data/examples/passenger.rb
CHANGED
@@ -2,7 +2,6 @@ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
|
2
2
|
require 'mustache'
|
3
3
|
|
4
4
|
class Passenger < Mustache
|
5
|
-
|
6
5
|
self.path = File.dirname(__FILE__)
|
7
6
|
self.template_extension = 'conf'
|
8
7
|
|
@@ -21,9 +20,8 @@ class Passenger < Mustache
|
|
21
20
|
def timestamp
|
22
21
|
Time.now.strftime('%Y%m%d%H%M%S')
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
26
24
|
|
27
25
|
if $0 == __FILE__
|
28
26
|
puts Passenger.to_text
|
29
|
-
end
|
27
|
+
end
|
data/lib/mustache/template.rb
CHANGED
@@ -47,7 +47,7 @@ class Mustache
|
|
47
47
|
# If enumerable, the return value is iterated over (a `for` loop).
|
48
48
|
def compile_sections(src)
|
49
49
|
res = ""
|
50
|
-
while src =~
|
50
|
+
while src =~ /\{\{\#(.+)\}\}\s*(.+)\{\{\/\1\}\}\s*/m
|
51
51
|
# $` = The string to the left of the last successful match
|
52
52
|
res << compile_tags($`)
|
53
53
|
name = $1.strip.to_sym.inspect
|
data/lib/mustache/version.rb
CHANGED
data/test/mustache_test.rb
CHANGED
@@ -11,7 +11,6 @@ require 'comments'
|
|
11
11
|
require 'passenger'
|
12
12
|
|
13
13
|
class MustacheTest < Test::Unit::TestCase
|
14
|
-
|
15
14
|
def test_passenger
|
16
15
|
assert_equal <<-end_passenger, Passenger.to_text
|
17
16
|
<VirtualHost *>
|
@@ -33,6 +32,28 @@ end_passenger
|
|
33
32
|
end_complex
|
34
33
|
end
|
35
34
|
|
35
|
+
def test_single_line_sections
|
36
|
+
html = %(<p class="flash-notice" {{# no_flash }}style="display: none;"{{/ no_flash }}>)
|
37
|
+
|
38
|
+
instance = Mustache.new
|
39
|
+
instance.template = html
|
40
|
+
instance[:no_flash] = true
|
41
|
+
assert_equal <<-rendered.strip, instance.render
|
42
|
+
<p class="flash-notice" style="display: none;">
|
43
|
+
rendered
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_two_line_sections
|
47
|
+
html = %(<p class="flash-notice" {{# no_flash }}style="display: none;"\n{{/ no_flash }}>)
|
48
|
+
|
49
|
+
instance = Mustache.new
|
50
|
+
instance.template = html
|
51
|
+
instance[:no_flash] = true
|
52
|
+
assert_equal <<-rendered.strip, instance.render
|
53
|
+
<p class="flash-notice" style="display: none;"\n>
|
54
|
+
rendered
|
55
|
+
end
|
56
|
+
|
36
57
|
def test_simple
|
37
58
|
assert_equal <<-end_simple, Simple.render
|
38
59
|
Hello Chris
|