mustache 0.99.2 → 0.99.3
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/bin/mustache +5 -1
- data/lib/mustache/context.rb +1 -1
- data/lib/mustache/parser.rb +2 -2
- data/lib/mustache/version.rb +1 -1
- data/test/fixtures/method_missing.rb +19 -0
- data/test/mustache_test.rb +11 -0
- data/test/parser_test.rb +14 -0
- metadata +5 -4
data/bin/mustache
CHANGED
@@ -11,7 +11,7 @@ class Mustache
|
|
11
11
|
# Return a structure describing the options.
|
12
12
|
def self.parse_options(args)
|
13
13
|
opts = OptionParser.new do |opts|
|
14
|
-
opts.banner = "Usage: mustache [-c] [-t] FILE ..."
|
14
|
+
opts.banner = "Usage: mustache [-c] [-t] [-r library] FILE ..."
|
15
15
|
|
16
16
|
opts.separator " "
|
17
17
|
|
@@ -42,6 +42,10 @@ class Mustache
|
|
42
42
|
exit
|
43
43
|
end
|
44
44
|
|
45
|
+
opts.on('-r', '--require LIB', 'Require a Ruby library before running.') do |lib|
|
46
|
+
require lib
|
47
|
+
end
|
48
|
+
|
45
49
|
opts.separator "Common Options:"
|
46
50
|
|
47
51
|
opts.on("-v", "--version", "Print the version") do |v|
|
data/lib/mustache/context.rb
CHANGED
data/lib/mustache/parser.rb
CHANGED
@@ -117,6 +117,7 @@ EOF
|
|
117
117
|
# of a new line.
|
118
118
|
unless start_of_line
|
119
119
|
@result << [:static, padding] unless padding.empty?
|
120
|
+
pre_match_position += padding.length
|
120
121
|
padding = ''
|
121
122
|
end
|
122
123
|
|
@@ -140,7 +141,6 @@ EOF
|
|
140
141
|
|
141
142
|
fetch = [:mustache, :fetch, content.split('.')]
|
142
143
|
prev = @result
|
143
|
-
last_index = @result.size
|
144
144
|
|
145
145
|
# Based on the sigil, do what needs to be done.
|
146
146
|
case type
|
@@ -192,7 +192,7 @@ EOF
|
|
192
192
|
# If this tag was the only non-whitespace content on this line, strip
|
193
193
|
# the remaining whitespace. If not, but we've been hanging on to padding
|
194
194
|
# from the beginning of the line, re-insert the padding as static text.
|
195
|
-
if start_of_line
|
195
|
+
if start_of_line && !@scanner.eos?
|
196
196
|
if @scanner.peek(2) =~ /\r?\n/ && SKIP_WHITESPACE.include?(type)
|
197
197
|
@scanner.skip(/\r?\n/)
|
198
198
|
else
|
data/lib/mustache/version.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
2
|
+
require 'mustache'
|
3
|
+
|
4
|
+
class MethodMissing < Mustache
|
5
|
+
self.template = '[ {{#list}}{{.}} {{/list}}]'
|
6
|
+
|
7
|
+
def method_missing(name, *args, &block)
|
8
|
+
return (0..10).to_a if name == :list
|
9
|
+
return super
|
10
|
+
end
|
11
|
+
|
12
|
+
def respond_to?(method)
|
13
|
+
method == :list
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
if $0 == __FILE__
|
18
|
+
puts MethodMissing.to_html
|
19
|
+
end
|
data/test/mustache_test.rb
CHANGED
@@ -88,6 +88,13 @@ end_complex
|
|
88
88
|
assert_equal "\taa", instance.render(:list => [1, 2])
|
89
89
|
end
|
90
90
|
|
91
|
+
def test_padding_before_section_on_eos
|
92
|
+
instance = Mustache.new
|
93
|
+
instance.template = "{{#list}}\n\t{{/list}}"
|
94
|
+
|
95
|
+
assert_equal "", instance.render(:list => [1, 2])
|
96
|
+
end
|
97
|
+
|
91
98
|
def test_two_line_sections
|
92
99
|
html = %(<p class="flash-notice" {{# no_flash }}style="display: none;"\n{{/ no_flash }}>)
|
93
100
|
|
@@ -539,6 +546,10 @@ template
|
|
539
546
|
assert_equal 'Marvin is 25', view.render
|
540
547
|
end
|
541
548
|
|
549
|
+
def test_method_missing
|
550
|
+
assert_equal('[ 0 1 2 3 4 5 6 7 8 9 10 ]', MethodMissing.render)
|
551
|
+
end
|
552
|
+
|
542
553
|
def test_custom_escaping
|
543
554
|
view = Class.new(Mustache) do
|
544
555
|
def escapeHTML(str)
|
data/test/parser_test.rb
CHANGED
@@ -56,4 +56,18 @@ EOF
|
|
56
56
|
|
57
57
|
assert_equal expected, tokens
|
58
58
|
end
|
59
|
+
|
60
|
+
def test_raw_content_and_whitespace
|
61
|
+
lexer = Mustache::Parser.new
|
62
|
+
tokens = lexer.compile("{{#list}}\t{{/list}}")
|
63
|
+
|
64
|
+
expected = [:multi,
|
65
|
+
[:mustache,
|
66
|
+
:section,
|
67
|
+
[:mustache, :fetch, ["list"]],
|
68
|
+
[:multi, [:static, "\t"]],
|
69
|
+
"\t"]]
|
70
|
+
|
71
|
+
assert_equal expected, tokens
|
72
|
+
end
|
59
73
|
end
|
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: 405
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 99
|
9
|
-
-
|
10
|
-
version: 0.99.
|
9
|
+
- 3
|
10
|
+
version: 0.99.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chris Wanstrath
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2011-03-
|
20
|
+
date: 2011-03-19 00:00:00 -07:00
|
21
21
|
default_executable:
|
22
22
|
dependencies: []
|
23
23
|
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- test/fixtures/inverted_section.rb
|
85
85
|
- test/fixtures/lambda.mustache
|
86
86
|
- test/fixtures/lambda.rb
|
87
|
+
- test/fixtures/method_missing.rb
|
87
88
|
- test/fixtures/namespaced.mustache
|
88
89
|
- test/fixtures/namespaced.rb
|
89
90
|
- test/fixtures/nested_objects.mustache
|