mustache 0.12.1 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mustache.rb +5 -0
- data/lib/mustache/generator.rb +1 -1
- data/lib/mustache/version.rb +1 -1
- data/test/mustache_test.rb +26 -0
- metadata +5 -5
data/lib/mustache.rb
CHANGED
@@ -362,6 +362,11 @@ class Mustache
|
|
362
362
|
if data.is_a? Hash
|
363
363
|
ctx = data
|
364
364
|
tpl = templateify(template)
|
365
|
+
elsif data.is_a? Symbol
|
366
|
+
old_template_name = self.class.template_name
|
367
|
+
self.class.template_name = data
|
368
|
+
tpl = templateify(template)
|
369
|
+
self.class.template_name = old_template_name
|
365
370
|
else
|
366
371
|
tpl = templateify(data)
|
367
372
|
end
|
data/lib/mustache/generator.rb
CHANGED
@@ -105,7 +105,7 @@ class Mustache
|
|
105
105
|
Mustache::Template.new(v.call(#{raw.inspect}).to_s).render(ctx.dup)
|
106
106
|
else
|
107
107
|
# Shortcut when passed non-array
|
108
|
-
v = [v] if v.respond_to?(:has_key?) || !v.respond_to?(:map)
|
108
|
+
v = [v] if v.respond_to?(:has_key?) || !v.respond_to?(:map) || v.is_a?(Struct)
|
109
109
|
|
110
110
|
v.map { |h| ctx.push(h); r = #{code}; ctx.pop; r }.join
|
111
111
|
end
|
data/lib/mustache/version.rb
CHANGED
data/test/mustache_test.rb
CHANGED
@@ -233,6 +233,24 @@ data
|
|
233
233
|
:deploy_to => '/var/www/example.com' )
|
234
234
|
end
|
235
235
|
|
236
|
+
def test_render_from_symbol
|
237
|
+
expected = <<-data
|
238
|
+
<VirtualHost *>
|
239
|
+
ServerName example.com
|
240
|
+
DocumentRoot /var/www/example.com
|
241
|
+
RailsEnv production
|
242
|
+
</VirtualHost>
|
243
|
+
data
|
244
|
+
old_path, Mustache.template_path = Mustache.template_path, File.dirname(__FILE__) + "/fixtures"
|
245
|
+
old_extension, Mustache.template_extension = Mustache.template_extension, "conf"
|
246
|
+
|
247
|
+
assert_equal expected, Mustache.render(:passenger, :stage => 'production',
|
248
|
+
:server => 'example.com',
|
249
|
+
:deploy_to => '/var/www/example.com' )
|
250
|
+
|
251
|
+
Mustache.template_path, Mustache.template_extension = old_path, old_extension
|
252
|
+
end
|
253
|
+
|
236
254
|
def test_doesnt_execute_what_it_doesnt_need_to
|
237
255
|
instance = Mustache.new
|
238
256
|
instance[:show] = false
|
@@ -471,6 +489,14 @@ end
|
|
471
489
|
template
|
472
490
|
end
|
473
491
|
|
492
|
+
def test_struct
|
493
|
+
person = Struct.new(:name, :age)
|
494
|
+
view = Mustache.new
|
495
|
+
view[:person] = person.new('Marvin', 25)
|
496
|
+
view.template = '{{#person}}{{name}} is {{age}}{{/person}}'
|
497
|
+
assert_equal 'Marvin is 25', view.render
|
498
|
+
end
|
499
|
+
|
474
500
|
def test_inherited_attributes
|
475
501
|
Object.const_set :TestNamespace, Module.new
|
476
502
|
base = Class.new(Mustache)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mustache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 43
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 13
|
9
|
+
- 0
|
10
|
+
version: 0.13.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chris Wanstrath
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-02-
|
18
|
+
date: 2011-02-23 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|