erubis 1.1.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +45 -18
- data/README.txt +80 -0
- data/benchmark/erubybench-lib.rb +189 -0
- data/benchmark/erubybench.rb +364 -0
- data/benchmark/erubybench.rhtml +61 -0
- data/benchmark/erubybench.yaml +61 -0
- data/bin/erubis +4 -180
- data/contrib/erubis +2297 -0
- data/contrib/inline-require +151 -0
- data/doc-api/classes/Erubis.html +236 -0
- data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +175 -0
- data/doc-api/classes/Erubis/ArrayBufferEruby.html +120 -0
- data/doc-api/classes/Erubis/ArrayEnhancer.html +174 -0
- data/doc-api/classes/Erubis/ArrayEruby.html +120 -0
- data/doc-api/classes/Erubis/BiPatternEnhancer.html +212 -0
- data/doc-api/classes/Erubis/BiPatternEruby.html +120 -0
- data/doc-api/classes/Erubis/CommandOptionError.html +113 -0
- data/doc-api/classes/Erubis/Context.html +249 -0
- data/doc-api/classes/Erubis/Ec.html +399 -0
- data/doc-api/classes/Erubis/Ejava.html +366 -0
- data/doc-api/classes/Erubis/Ejavascript.html +390 -0
- data/doc-api/classes/Erubis/Engine.html +711 -0
- data/doc-api/classes/Erubis/Eperl.html +350 -0
- data/doc-api/classes/Erubis/Ephp.html +308 -0
- data/doc-api/classes/Erubis/ErubisError.html +117 -0
- data/doc-api/classes/Erubis/Eruby.html +310 -0
- data/doc-api/classes/Erubis/EscapeEnhancer.html +167 -0
- data/doc-api/classes/Erubis/EscapedEc.html +120 -0
- data/doc-api/classes/Erubis/EscapedEjava.html +120 -0
- data/doc-api/classes/Erubis/EscapedEjavascript.html +120 -0
- data/doc-api/classes/Erubis/EscapedEperl.html +120 -0
- data/doc-api/classes/Erubis/EscapedEphp.html +120 -0
- data/doc-api/classes/Erubis/EscapedEruby.html +127 -0
- data/doc-api/classes/Erubis/EscapedEscheme.html +120 -0
- data/doc-api/classes/Erubis/Escheme.html +389 -0
- data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +264 -0
- data/doc-api/classes/Erubis/HeaderFooterEruby.html +120 -0
- data/doc-api/classes/Erubis/Main.html +318 -0
- data/doc-api/classes/Erubis/NoTextEnhancer.html +159 -0
- data/doc-api/classes/Erubis/NoTextEruby.html +120 -0
- data/doc-api/classes/Erubis/OptimizedEruby.html +445 -0
- data/doc-api/classes/Erubis/OptimizedXmlEruby.html +163 -0
- data/doc-api/classes/Erubis/PercentLineEnhancer.html +174 -0
- data/doc-api/classes/Erubis/PercentLineEruby.html +120 -0
- data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +212 -0
- data/doc-api/classes/Erubis/PrintEnabledEruby.html +120 -0
- data/doc-api/classes/Erubis/PrintOutEnhancer.html +244 -0
- data/doc-api/classes/Erubis/PrintOutEruby.html +120 -0
- data/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html +121 -0
- data/doc-api/classes/Erubis/SimplifiedEruby.html +120 -0
- data/doc-api/classes/Erubis/SimplifyEnhancer.html +185 -0
- data/doc-api/classes/Erubis/StdoutEnhancer.html +173 -0
- data/doc-api/classes/Erubis/StdoutEruby.html +120 -0
- data/doc-api/classes/Erubis/StdoutSimplifiedEruby.html +121 -0
- data/doc-api/classes/Erubis/StringBufferEnhancer.html +174 -0
- data/doc-api/classes/Erubis/StringBufferEruby.html +120 -0
- data/doc-api/classes/Erubis/StringIOEruby.html +120 -0
- data/doc-api/classes/Erubis/TinyEruby.html +305 -0
- data/doc-api/classes/Erubis/XmlEruby.html +130 -0
- data/doc-api/classes/Erubis/XmlHelper.html +193 -0
- data/doc-api/created.rid +1 -0
- data/doc-api/files/__/README_txt.html +214 -0
- data/doc-api/files/erubis/engine/ec_rb.html +115 -0
- data/doc-api/files/erubis/engine/ejava_rb.html +115 -0
- data/doc-api/files/erubis/engine/ejavascript_rb.html +115 -0
- data/doc-api/files/erubis/engine/enhanced_rb.html +115 -0
- data/doc-api/files/erubis/engine/eperl_rb.html +115 -0
- data/doc-api/files/erubis/engine/ephp_rb.html +115 -0
- data/doc-api/files/erubis/engine/eruby_rb.html +115 -0
- data/doc-api/files/erubis/engine/escheme_rb.html +115 -0
- data/doc-api/files/erubis/engine/optimized_rb.html +114 -0
- data/doc-api/files/erubis/engine_rb.html +114 -0
- data/doc-api/files/erubis/enhancer_rb.html +114 -0
- data/doc-api/files/erubis/helper_rb.html +107 -0
- data/doc-api/files/erubis/local-setting_rb.html +107 -0
- data/doc-api/files/erubis/main_rb.html +125 -0
- data/doc-api/files/erubis/tiny_rb.html +107 -0
- data/doc-api/files/erubis_rb.html +118 -0
- data/doc-api/fr_class_index.html +77 -0
- data/doc-api/fr_file_index.html +43 -0
- data/doc-api/fr_method_index.html +157 -0
- data/doc-api/index.html +24 -0
- data/doc-api/rdoc-style.css +208 -0
- data/doc/users-guide.html +1507 -375
- data/examples/Makefile +53 -0
- data/examples/example.ec +24 -0
- data/examples/example.ejava +41 -0
- data/examples/example.ejavascript +16 -0
- data/examples/example.eperl +16 -0
- data/examples/example.ephp +17 -0
- data/examples/example.eruby +15 -0
- data/examples/example.escheme +26 -0
- data/lib/erubis.rb +37 -269
- data/lib/erubis/engine.rb +260 -0
- data/lib/erubis/engine/ec.rb +106 -0
- data/lib/erubis/engine/ejava.rb +101 -0
- data/lib/erubis/engine/ejavascript.rb +104 -0
- data/lib/erubis/engine/enhanced.rb +102 -0
- data/lib/erubis/engine/eperl.rb +83 -0
- data/lib/erubis/engine/ephp.rb +84 -0
- data/lib/erubis/engine/eruby.rb +91 -0
- data/lib/erubis/engine/escheme.rb +96 -0
- data/lib/erubis/engine/optimized.rb +114 -0
- data/lib/erubis/enhancer.rb +487 -0
- data/lib/erubis/helper.rb +53 -0
- data/lib/erubis/local-setting.rb +10 -0
- data/lib/erubis/main.rb +368 -0
- data/lib/erubis/tiny.rb +65 -0
- data/test/assert-text-equal.rb +45 -0
- data/test/test-bin.rb +222 -45
- data/test/test-engines.rb +343 -0
- data/test/test-erubis.rb +836 -501
- data/test/test.rb +27 -0
- data/test/testutil.rb +86 -0
- metadata +131 -8
- data/README +0 -50
@@ -0,0 +1,45 @@
|
|
1
|
+
###
|
2
|
+
### $Rev: 6 $
|
3
|
+
### $Release: 2.0.0 $
|
4
|
+
### copyright(c) 2006 kuwata-lab all rights reserved.
|
5
|
+
###
|
6
|
+
|
7
|
+
require 'test/unit'
|
8
|
+
require 'tempfile'
|
9
|
+
|
10
|
+
|
11
|
+
module Test
|
12
|
+
module Unit
|
13
|
+
class TestCase
|
14
|
+
|
15
|
+
def assert_text_equal(expected, actual, message=nil, diffopt='-u', flag_cut=true)
|
16
|
+
if expected == actual
|
17
|
+
assert(true)
|
18
|
+
return
|
19
|
+
end
|
20
|
+
if expected[-1] != ?\n || actual[-1] != ?\n
|
21
|
+
expected += "\n"
|
22
|
+
actual += "\n"
|
23
|
+
end
|
24
|
+
begin
|
25
|
+
expfile = Tempfile.new(".expected.")
|
26
|
+
expfile.write(expected); expfile.flush()
|
27
|
+
actfile = Tempfile.new(".actual.")
|
28
|
+
actfile.write(actual); actfile.flush()
|
29
|
+
diff = `diff #{diffopt} #{expfile.path} #{actfile.path}`
|
30
|
+
ensure
|
31
|
+
expfile.close(true) if expfile
|
32
|
+
actfile.close(true) if actfile
|
33
|
+
end
|
34
|
+
# cut 1st & 2nd lines
|
35
|
+
message = (flag_cut ? diff.gsub(/\A.*\n.*\n/, '') : diff) unless message
|
36
|
+
#raise Test::Unit::AssertionFailedError.new(message)
|
37
|
+
assert_block(message) { false } # or assert(false, message)
|
38
|
+
end
|
39
|
+
|
40
|
+
alias assert_equal_with_diff assert_text_equal # for compatibility
|
41
|
+
alias assert_text_equals assert_text_equal # for typo
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/test/test-bin.rb
CHANGED
@@ -1,15 +1,12 @@
|
|
1
1
|
##
|
2
|
-
## $Rev:
|
3
|
-
## $Release:
|
4
|
-
## $Date: 2006-
|
2
|
+
## $Rev: 21 $
|
3
|
+
## $Release: 2.0.0 $
|
4
|
+
## $Date: 2006-05-20 08:57:39 +0900 (Sat, 20 May 2006) $
|
5
5
|
##
|
6
6
|
|
7
|
-
|
8
|
-
libdir = File.dirname(testdir) + '/lib'
|
9
|
-
$: << testdir
|
10
|
-
$: << libdir
|
7
|
+
require "#{File.dirname(__FILE__)}/test.rb"
|
11
8
|
|
12
|
-
bindir = File.dirname(
|
9
|
+
bindir = File.dirname(TESTDIR) + '/bin'
|
13
10
|
$script = bindir + '/erubis'
|
14
11
|
if test(?f, 'bin/erubis')
|
15
12
|
$script = 'bin/erubis'
|
@@ -19,12 +16,19 @@ end
|
|
19
16
|
|
20
17
|
|
21
18
|
require 'test/unit'
|
22
|
-
#require 'test/unit/ui/console/testrunner'
|
23
19
|
require 'assert-text-equal'
|
24
20
|
require 'yaml'
|
25
21
|
require 'tempfile'
|
26
22
|
|
27
23
|
require 'erubis'
|
24
|
+
require 'erubis/main'
|
25
|
+
|
26
|
+
|
27
|
+
class StringWriter < String
|
28
|
+
def write(arg)
|
29
|
+
self << arg
|
30
|
+
end
|
31
|
+
end
|
28
32
|
|
29
33
|
|
30
34
|
class BinTest < Test::Unit::TestCase
|
@@ -37,16 +41,28 @@ list:
|
|
37
41
|
<% end %>
|
38
42
|
user: <%= defined?(user) ? user : "(none)" %>
|
39
43
|
END
|
40
|
-
|
44
|
+
INPUT2 = INPUT.gsub(/\blist([^:])/, '@list\1').gsub(/\buser([^:])/, '@user\1')
|
45
|
+
|
46
|
+
# SRC = <<'END'
|
47
|
+
#_buf = ''; _buf << "list:\n"
|
48
|
+
# list = ['<aaa>', 'b&b', '"ccc"']
|
49
|
+
# for item in list
|
50
|
+
#_buf << " - "; _buf << ( item ).to_s; _buf << "\n"
|
51
|
+
# end
|
52
|
+
#_buf << "user: "; _buf << ( defined?(user) ? user : "(none)" ).to_s; _buf << "\n"
|
53
|
+
#_buf
|
54
|
+
#END
|
41
55
|
SRC = <<'END'
|
42
|
-
|
43
|
-
list = ['<aaa>', 'b&b', '"ccc"']
|
56
|
+
_buf = []; _buf << 'list:
|
57
|
+
'; list = ['<aaa>', 'b&b', '"ccc"']
|
44
58
|
for item in list
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
|
59
|
+
_buf << ' - '; _buf << ( item ).to_s; _buf << '
|
60
|
+
'; end
|
61
|
+
_buf << 'user: '; _buf << ( defined?(user) ? user : "(none)" ).to_s; _buf << '
|
62
|
+
';
|
63
|
+
_buf.join
|
49
64
|
END
|
65
|
+
# SRC2 = SRC.gsub(/\blist /, '@list ').gsub(/\buser /, '@user ')
|
50
66
|
|
51
67
|
OUTPUT = <<'END'
|
52
68
|
list:
|
@@ -56,26 +72,50 @@ list:
|
|
56
72
|
user: (none)
|
57
73
|
END
|
58
74
|
|
75
|
+
ESCAPED_OUTPUT = <<'END'
|
76
|
+
list:
|
77
|
+
- <aaa>
|
78
|
+
- b&b
|
79
|
+
- "ccc"
|
80
|
+
user: (none)
|
81
|
+
END
|
82
|
+
|
59
83
|
|
60
84
|
def _test()
|
85
|
+
if $target
|
86
|
+
name = (caller()[0] =~ /in `test_(.*?)'/) && $1
|
87
|
+
return unless name == $target
|
88
|
+
end
|
61
89
|
if @filename == nil
|
62
90
|
method = (caller[0] =~ /in `(.*)'/) && $1 #'
|
63
91
|
@filename = "tmp.#{method}"
|
64
92
|
end
|
65
93
|
File.open(@filename, 'w') { |f| f.write(@input) } if @filename
|
66
94
|
begin
|
67
|
-
|
68
|
-
|
95
|
+
#if @options.is_a?(Array)
|
96
|
+
# command = "ruby #{$script} #{@options.join(' ')} #{@filename}"
|
97
|
+
#else
|
98
|
+
# command = "ruby #{$script} #{@options} #{@filename}"
|
99
|
+
#end
|
100
|
+
#output = `#{command}`
|
101
|
+
if @options.is_a?(Array)
|
102
|
+
argv = @options + [ @filename ]
|
103
|
+
else
|
104
|
+
argv = "#{@options} #{@filename}".split
|
105
|
+
end
|
106
|
+
$stdout = output = StringWriter.new
|
107
|
+
Erubis::Main.new.execute(argv)
|
69
108
|
ensure
|
109
|
+
$stdout = STDOUT
|
70
110
|
File.unlink(@filename) if @filename && test(?f, @filename)
|
71
111
|
end
|
72
112
|
assert_text_equal(@expected, output)
|
73
113
|
end
|
74
114
|
|
75
115
|
|
76
|
-
def test_version
|
116
|
+
def test_version # -v
|
77
117
|
@options = '-v'
|
78
|
-
@expected = (("$Release:
|
118
|
+
@expected = (("$Release: 2.0.0 $" =~ /[.\d]+/) && $&) + "\n"
|
79
119
|
@filename = false
|
80
120
|
_test()
|
81
121
|
end
|
@@ -89,23 +129,24 @@ END
|
|
89
129
|
end
|
90
130
|
|
91
131
|
|
92
|
-
def test_source1
|
132
|
+
def test_source1 # -x
|
93
133
|
@input = INPUT
|
94
134
|
@expected = SRC
|
95
|
-
@options = '-
|
135
|
+
@options = '-x'
|
96
136
|
_test()
|
97
137
|
end
|
98
138
|
|
99
139
|
|
100
|
-
def test_pattern1
|
140
|
+
def test_pattern1 # -p
|
101
141
|
@input = INPUT.gsub(/<%/, '<!--%').gsub(/%>/, '%-->')
|
102
142
|
@expected = OUTPUT
|
103
|
-
|
143
|
+
#@options = "-p '<!--% %-->'"
|
144
|
+
@options = ["-p", "<!--% %-->"]
|
104
145
|
_test()
|
105
146
|
end
|
106
147
|
|
107
148
|
|
108
|
-
def test_class1
|
149
|
+
def test_class1 # -c
|
109
150
|
@input = INPUT
|
110
151
|
@expected = OUTPUT.gsub(/<aaa>/, '<aaa>').gsub(/b&b/, 'b&b').gsub(/"ccc"/, '"ccc"')
|
111
152
|
@options = "-c XmlEruby"
|
@@ -113,7 +154,7 @@ END
|
|
113
154
|
end
|
114
155
|
|
115
156
|
|
116
|
-
def test_notrim1
|
157
|
+
def test_notrim1 # -T
|
117
158
|
@input = INPUT
|
118
159
|
@expected = <<'END'
|
119
160
|
list:
|
@@ -131,33 +172,45 @@ END
|
|
131
172
|
end
|
132
173
|
|
133
174
|
|
134
|
-
def test_notrim2
|
175
|
+
def test_notrim2 # -T
|
135
176
|
@input = INPUT
|
177
|
+
# @expected = <<'END'
|
178
|
+
#_buf = ''; _buf << "list:\n"
|
179
|
+
# list = ['<aaa>', 'b&b', '"ccc"']
|
180
|
+
# for item in list ; _buf << "\n"
|
181
|
+
#_buf << " - "; _buf << ( item ).to_s; _buf << "\n"
|
182
|
+
# end ; _buf << "\n"
|
183
|
+
#_buf << "user: "; _buf << ( defined?(user) ? user : "(none)" ).to_s; _buf << "\n"
|
184
|
+
#_buf
|
185
|
+
#END
|
136
186
|
@expected = <<'END'
|
137
|
-
|
138
|
-
list = ['<aaa>', 'b&b', '"ccc"']
|
139
|
-
for item in list ;
|
140
|
-
|
141
|
-
end ;
|
142
|
-
|
143
|
-
|
187
|
+
_buf = []; _buf << 'list:
|
188
|
+
'; list = ['<aaa>', 'b&b', '"ccc"']
|
189
|
+
for item in list ; _buf << '
|
190
|
+
'; _buf << ' - '; _buf << ( item ).to_s; _buf << '
|
191
|
+
'; end ; _buf << '
|
192
|
+
'; _buf << 'user: '; _buf << ( defined?(user) ? user : "(none)" ).to_s; _buf << '
|
193
|
+
';
|
194
|
+
_buf.join
|
144
195
|
END
|
145
|
-
@options = "-
|
196
|
+
@options = "-xT"
|
146
197
|
_test()
|
147
198
|
end
|
148
199
|
|
149
200
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
201
|
+
#--
|
202
|
+
#def test_context1
|
203
|
+
# @input = INPUT
|
204
|
+
# @expected = OUTPUT.gsub(/\(none\)/, 'Hello')
|
205
|
+
# @options = '--user=Hello'
|
206
|
+
# _test()
|
207
|
+
#end
|
208
|
+
#++
|
156
209
|
|
157
210
|
|
158
|
-
def test_yaml1
|
211
|
+
def test_yaml1 # -f
|
159
212
|
yamlfile = "test.context1.yaml"
|
160
|
-
@input =
|
213
|
+
@input = INPUT2
|
161
214
|
@expected = OUTPUT.gsub(/\(none\)/, 'Hello')
|
162
215
|
@options = "-f #{yamlfile}"
|
163
216
|
#
|
@@ -174,7 +227,94 @@ END
|
|
174
227
|
end
|
175
228
|
|
176
229
|
|
177
|
-
def
|
230
|
+
def test_untabify1 # -t
|
231
|
+
yamlfile = "test.context2.yaml"
|
232
|
+
@input = INPUT2
|
233
|
+
@expected = OUTPUT.gsub(/\(none\)/, 'Hello')
|
234
|
+
@options = "-tf #{yamlfile}"
|
235
|
+
#
|
236
|
+
yaml = <<-END
|
237
|
+
user: Hello
|
238
|
+
password: world
|
239
|
+
END
|
240
|
+
File.open(yamlfile, 'w') { |f| f.write(yaml) }
|
241
|
+
begin
|
242
|
+
_test()
|
243
|
+
ensure
|
244
|
+
File.unlink(yamlfile) if test(?f, yamlfile)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
|
249
|
+
def test_symbolify1 # -S
|
250
|
+
yamlfile = "test.context3.yaml"
|
251
|
+
@input = <<END
|
252
|
+
<% for h in @list %>
|
253
|
+
<tr>
|
254
|
+
<td><%= h[:name] %></td><td><%= h[:mail] %></td>
|
255
|
+
</tr>
|
256
|
+
<% end %>
|
257
|
+
END
|
258
|
+
@expected = <<END
|
259
|
+
<tr>
|
260
|
+
<td>foo</td><td>foo@mail.com</td>
|
261
|
+
</tr>
|
262
|
+
<tr>
|
263
|
+
<td>bar</td><td>bar@mail.org</td>
|
264
|
+
</tr>
|
265
|
+
END
|
266
|
+
@options = "-f #{yamlfile} -S"
|
267
|
+
#
|
268
|
+
yaml = <<-END
|
269
|
+
list:
|
270
|
+
- name: foo
|
271
|
+
mail: foo@mail.com
|
272
|
+
- name: bar
|
273
|
+
mail: bar@mail.org
|
274
|
+
END
|
275
|
+
File.open(yamlfile, 'w') { |f| f.write(yaml) }
|
276
|
+
begin
|
277
|
+
_test()
|
278
|
+
ensure
|
279
|
+
File.unlink(yamlfile) if test(?f, yamlfile)
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
283
|
+
|
284
|
+
def test_context1 # -B
|
285
|
+
yamlfile = "test.context4.yaml"
|
286
|
+
#
|
287
|
+
@input = <<'END'
|
288
|
+
user = <%= user %>
|
289
|
+
<% for item in list %>
|
290
|
+
- <%= item %>
|
291
|
+
<% end %>
|
292
|
+
END
|
293
|
+
@expected = <<'END'
|
294
|
+
user = World
|
295
|
+
- aaa
|
296
|
+
- bbb
|
297
|
+
- ccc
|
298
|
+
END
|
299
|
+
@options = "-f #{yamlfile} -B "
|
300
|
+
#
|
301
|
+
yaml = <<-END
|
302
|
+
user: World
|
303
|
+
list:
|
304
|
+
- aaa
|
305
|
+
- bbb
|
306
|
+
- ccc
|
307
|
+
END
|
308
|
+
File.open(yamlfile, 'w') { |f| f.write(yaml) }
|
309
|
+
begin
|
310
|
+
_test()
|
311
|
+
ensure
|
312
|
+
File.unlink(yamlfile) if test(?f, yamlfile)
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
|
317
|
+
def test_include1 # -I
|
178
318
|
dir = 'foo'
|
179
319
|
lib = 'bar'
|
180
320
|
Dir.mkdir dir unless test(?d, dir)
|
@@ -200,7 +340,7 @@ END
|
|
200
340
|
end
|
201
341
|
|
202
342
|
|
203
|
-
def test_require1
|
343
|
+
def test_require1 # -r
|
204
344
|
dir = 'foo'
|
205
345
|
lib = 'bar'
|
206
346
|
Dir.mkdir dir unless test(?d, dir)
|
@@ -226,4 +366,41 @@ END
|
|
226
366
|
end
|
227
367
|
|
228
368
|
|
369
|
+
def test_enhancers1 # -E
|
370
|
+
@input = <<END
|
371
|
+
<% list = %w[<aaa> b&b "ccc"] %>
|
372
|
+
% for item in list
|
373
|
+
- <%= item %> : <%== item %>
|
374
|
+
- [= item =] : [== item =]
|
375
|
+
% end
|
376
|
+
END
|
377
|
+
@expected = <<END
|
378
|
+
- <aaa> : <aaa>
|
379
|
+
- <aaa> : <aaa>
|
380
|
+
- b&b : b&b
|
381
|
+
- b&b : b&b
|
382
|
+
- "ccc" : "ccc"
|
383
|
+
- "ccc" : "ccc"
|
384
|
+
END
|
385
|
+
@options = "-E Escape,PercentLine,HeaderFooter,BiPattern"
|
386
|
+
_test()
|
387
|
+
end
|
388
|
+
|
389
|
+
|
390
|
+
def test_bodyonly1 # -b
|
391
|
+
@input = INPUT
|
392
|
+
@expected = SRC.sub(/\A_buf = \[\];/,'').sub(/\n_buf.join\n\z/,'')
|
393
|
+
@options = '-b -x'
|
394
|
+
_test()
|
395
|
+
end
|
396
|
+
|
397
|
+
|
398
|
+
def test_escape1 # -e
|
399
|
+
@input = INPUT
|
400
|
+
@expected = SRC.gsub(/<< \((.*?)\).to_s;/, '<< Erubis::XmlHelper.escape_xml(\1);')
|
401
|
+
@options = '-ex'
|
402
|
+
_test()
|
403
|
+
end
|
404
|
+
|
405
|
+
|
229
406
|
end
|
@@ -0,0 +1,343 @@
|
|
1
|
+
##
|
2
|
+
## $Rev: 21 $
|
3
|
+
## $Release: 2.0.0 $
|
4
|
+
## copyright(c) 2006 kuwata-lab all rights reserved.
|
5
|
+
##
|
6
|
+
|
7
|
+
require "#{File.dirname(__FILE__)}/test.rb"
|
8
|
+
|
9
|
+
require 'erubis'
|
10
|
+
require 'erubis/engine/eruby'
|
11
|
+
require 'erubis/engine/ephp'
|
12
|
+
require 'erubis/engine/ec'
|
13
|
+
require 'erubis/engine/ejava'
|
14
|
+
require 'erubis/engine/escheme'
|
15
|
+
require 'erubis/engine/eperl'
|
16
|
+
require 'erubis/engine/ejavascript'
|
17
|
+
|
18
|
+
|
19
|
+
class EnginesTest < Test::Unit::TestCase
|
20
|
+
extend TestEnhancer
|
21
|
+
|
22
|
+
#load_yaml_documents(__FILE__)
|
23
|
+
testdata_list = load_yaml_document(__FILE__)
|
24
|
+
define_testmethods(testdata_list)
|
25
|
+
|
26
|
+
def _test()
|
27
|
+
klass = Erubis.const_get(@class)
|
28
|
+
engine = klass.new(@input, @options || {})
|
29
|
+
actual = engine.src
|
30
|
+
assert_text_equal(@expected, actual)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
__END__
|
36
|
+
- name: ruby1
|
37
|
+
lang: ruby
|
38
|
+
class: Eruby
|
39
|
+
options:
|
40
|
+
input: |
|
41
|
+
<table>
|
42
|
+
<tbody>
|
43
|
+
<% i = 0
|
44
|
+
list.each_with_index do |item, i| %>
|
45
|
+
<tr>
|
46
|
+
<td><%= i+1 %></td>
|
47
|
+
<td><%== list %></td>
|
48
|
+
</tr>
|
49
|
+
<% end %>
|
50
|
+
</tbody>
|
51
|
+
</table>
|
52
|
+
<%=== i+1 %>
|
53
|
+
expected: |
|
54
|
+
_buf = []; _buf << '<table>
|
55
|
+
<tbody>
|
56
|
+
'; i = 0
|
57
|
+
list.each_with_index do |item, i|
|
58
|
+
_buf << ' <tr>
|
59
|
+
<td>'; _buf << ( i+1 ).to_s; _buf << '</td>
|
60
|
+
<td>'; _buf << Erubis::XmlHelper.escape_xml( list ); _buf << '</td>
|
61
|
+
</tr>
|
62
|
+
'; end
|
63
|
+
_buf << ' </tbody>
|
64
|
+
</table>
|
65
|
+
'; $stderr.puts("*** debug: i+1=#{(i+1).inspect}"); _buf << '
|
66
|
+
';
|
67
|
+
_buf.join
|
68
|
+
##
|
69
|
+
- name: php1
|
70
|
+
lang: php
|
71
|
+
class: Ephp
|
72
|
+
options:
|
73
|
+
input: |
|
74
|
+
<table>
|
75
|
+
<tbody>
|
76
|
+
<%
|
77
|
+
$i = 0;
|
78
|
+
foreach ($list as $item) {
|
79
|
+
$i++;
|
80
|
+
%>
|
81
|
+
<tr>
|
82
|
+
<td><%= $i %></td>
|
83
|
+
<td><%== $item %></td>
|
84
|
+
</tr>
|
85
|
+
<%
|
86
|
+
}
|
87
|
+
%>
|
88
|
+
</tbody>
|
89
|
+
</table>
|
90
|
+
<%=== $i %>
|
91
|
+
expected: |
|
92
|
+
<table>
|
93
|
+
<tbody>
|
94
|
+
<?php
|
95
|
+
$i = 0;
|
96
|
+
foreach ($list as $item) {
|
97
|
+
$i++;
|
98
|
+
?>
|
99
|
+
<tr>
|
100
|
+
<td><?php echo $i; ?></td>
|
101
|
+
<td><?php echo htmlspecialchars($item); ?></td>
|
102
|
+
</tr>
|
103
|
+
<?php
|
104
|
+
}
|
105
|
+
?>
|
106
|
+
</tbody>
|
107
|
+
</table>
|
108
|
+
<?php error_log('*** debug: $i='.($i), 0); ?>
|
109
|
+
##
|
110
|
+
- name: c1
|
111
|
+
lang: c
|
112
|
+
class: Ec
|
113
|
+
options: { :filename: foo.html, :indent: ' ' }
|
114
|
+
input: |4
|
115
|
+
<table>
|
116
|
+
<tbody>
|
117
|
+
<% for (i = 0; i < list; i++) { %>
|
118
|
+
<tr>
|
119
|
+
<td><%= "%d", i %></td>
|
120
|
+
<td><%== "%s", list[i] %></td>
|
121
|
+
</tr>
|
122
|
+
<% } %>
|
123
|
+
</tbody>
|
124
|
+
</table>
|
125
|
+
<%=== "%d", i %>
|
126
|
+
expected: |
|
127
|
+
#line 1 "foo.html"
|
128
|
+
fputs("<table>\n"
|
129
|
+
" <tbody>\n", stdout);
|
130
|
+
for (i = 0; i < list; i++) {
|
131
|
+
fputs(" <tr>\n"
|
132
|
+
" <td>", stdout); fprintf(stdout, "%d", i); fputs("</td>\n"
|
133
|
+
" <td>", stdout); fprintf(stdout, "%s", escape(list[i])); fputs("</td>\n"
|
134
|
+
" </tr>\n", stdout);
|
135
|
+
}
|
136
|
+
fputs(" </tbody>\n"
|
137
|
+
"</table>\n", stdout);
|
138
|
+
fprintf(stderr, "*** debug: i=" "%d", i); fputs("\n", stdout);
|
139
|
+
##
|
140
|
+
- name: java1
|
141
|
+
lang: java
|
142
|
+
class: Ejava
|
143
|
+
options: { :buf: _buf, :bufclass: StringBuilder, :indent: ' ' }
|
144
|
+
input: |
|
145
|
+
<table>
|
146
|
+
<tbody>
|
147
|
+
<%
|
148
|
+
int i = 0;
|
149
|
+
for (Iterator it = list.iterator(); it.hasNext(); ) {
|
150
|
+
String s = (String)it.next();
|
151
|
+
i++;
|
152
|
+
%>
|
153
|
+
<tr class="<%= i%2==0 ? "even" : "odd" %>">
|
154
|
+
<td><%= i %></td>
|
155
|
+
<td><%== s %></td>
|
156
|
+
</tr>
|
157
|
+
<%
|
158
|
+
}
|
159
|
+
%>
|
160
|
+
<tbody>
|
161
|
+
</table>
|
162
|
+
<%=== i %>
|
163
|
+
expected: |4
|
164
|
+
StringBuilder _buf = new StringBuilder(); _buf.append("<table>\n"
|
165
|
+
+ " <tbody>\n");
|
166
|
+
|
167
|
+
int i = 0;
|
168
|
+
for (Iterator it = list.iterator(); it.hasNext(); ) {
|
169
|
+
String s = (String)it.next();
|
170
|
+
i++;
|
171
|
+
|
172
|
+
_buf.append(" <tr class=\""); _buf.append(i%2==0 ? "even" : "odd"); _buf.append("\">\n"
|
173
|
+
+ " <td>"); _buf.append(i); _buf.append("</td>\n"
|
174
|
+
+ " <td>"); _buf.append(escape(s)); _buf.append("</td>\n"
|
175
|
+
+ " </tr>\n");
|
176
|
+
|
177
|
+
}
|
178
|
+
|
179
|
+
_buf.append(" <tbody>\n"
|
180
|
+
+ "</table>\n");
|
181
|
+
System.err.println("*** debug: i="+(i)); _buf.append("\n");
|
182
|
+
return _buf.toString();
|
183
|
+
##
|
184
|
+
- name: scheme1
|
185
|
+
lang: scheme
|
186
|
+
class: Escheme
|
187
|
+
options:
|
188
|
+
input: &scheme1_input|
|
189
|
+
<% (let ((i 0)) %>
|
190
|
+
<table>
|
191
|
+
<tbody>
|
192
|
+
<%
|
193
|
+
(for-each
|
194
|
+
(lambda (item)
|
195
|
+
(set! i (+ i 1))
|
196
|
+
%>
|
197
|
+
<tr>
|
198
|
+
<td><%= i %></td>
|
199
|
+
<td><%== item %></td>
|
200
|
+
</tr>
|
201
|
+
<%
|
202
|
+
); lambda end
|
203
|
+
list); for-each end
|
204
|
+
%>
|
205
|
+
</tbody>
|
206
|
+
</table>
|
207
|
+
<%=== i %>
|
208
|
+
<% ); let end %>
|
209
|
+
expected: |4
|
210
|
+
(let ((_buf '())) (define (_add x) (set! _buf (cons x _buf))) (let ((i 0))
|
211
|
+
(_add "<table>
|
212
|
+
<tbody>\n")
|
213
|
+
|
214
|
+
(for-each
|
215
|
+
(lambda (item)
|
216
|
+
(set! i (+ i 1))
|
217
|
+
|
218
|
+
(_add " <tr>
|
219
|
+
<td>")(_add i)(_add "</td>
|
220
|
+
<td>")(_add (escape item))(_add "</td>
|
221
|
+
</tr>\n")
|
222
|
+
|
223
|
+
); lambda end
|
224
|
+
list); for-each end
|
225
|
+
|
226
|
+
(_add " </tbody>
|
227
|
+
</table>\n")
|
228
|
+
(display "*** debug: i=")(display i)(display "\n")(_add "\n")
|
229
|
+
); let end
|
230
|
+
(reverse _buf))
|
231
|
+
|
232
|
+
##
|
233
|
+
- name: scheme2
|
234
|
+
lang: scheme
|
235
|
+
class: Escheme
|
236
|
+
options: { :func: 'display' }
|
237
|
+
input: *scheme1_input
|
238
|
+
expected: |4
|
239
|
+
(let ((i 0))
|
240
|
+
(display "<table>
|
241
|
+
<tbody>\n")
|
242
|
+
|
243
|
+
(for-each
|
244
|
+
(lambda (item)
|
245
|
+
(set! i (+ i 1))
|
246
|
+
|
247
|
+
(display " <tr>
|
248
|
+
<td>")(display i)(display "</td>
|
249
|
+
<td>")(display (escape item))(display "</td>
|
250
|
+
</tr>\n")
|
251
|
+
|
252
|
+
); lambda end
|
253
|
+
list); for-each end
|
254
|
+
|
255
|
+
(display " </tbody>
|
256
|
+
</table>\n")
|
257
|
+
(display "*** debug: i=")(display i)(display "\n")(display "\n")
|
258
|
+
); let end
|
259
|
+
##
|
260
|
+
- name: perl1
|
261
|
+
lang: perl
|
262
|
+
class: Eperl
|
263
|
+
options:
|
264
|
+
input: |
|
265
|
+
<%
|
266
|
+
my $user = 'Erubis';
|
267
|
+
my @list = ('<aaa>', 'b&b', '"ccc"');
|
268
|
+
%>
|
269
|
+
<p>Hello <%= $user %>!</p>
|
270
|
+
<table>
|
271
|
+
<tbody>
|
272
|
+
<% $i = 0; %>
|
273
|
+
<% for $item (@list) { %>
|
274
|
+
<tr bgcolor=<%= ++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
|
275
|
+
<td><%= $i %></td>
|
276
|
+
<td><%== $item %></td>
|
277
|
+
</tr>
|
278
|
+
<% } %>
|
279
|
+
</tbody>
|
280
|
+
</table>
|
281
|
+
<%=== $i %>
|
282
|
+
expected: |4
|
283
|
+
|
284
|
+
my $user = 'Erubis';
|
285
|
+
my @list = ('<aaa>', 'b&b', '"ccc"');
|
286
|
+
|
287
|
+
print('<p>Hello '); print($user); print('!</p>
|
288
|
+
<table>
|
289
|
+
<tbody>
|
290
|
+
'); $i = 0;
|
291
|
+
for $item (@list) {
|
292
|
+
print(' <tr bgcolor='); print(++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'); print('">
|
293
|
+
<td>'); print($i); print('</td>
|
294
|
+
<td>'); print(escape($item)); print('</td>
|
295
|
+
</tr>
|
296
|
+
'); }
|
297
|
+
print(' </tbody>
|
298
|
+
</table>
|
299
|
+
'); print('*** debug: $i=', $i, "\n");print('
|
300
|
+
');
|
301
|
+
##
|
302
|
+
- name: javascript
|
303
|
+
lang: javascript
|
304
|
+
class: Ejavascript
|
305
|
+
options:
|
306
|
+
input: |
|
307
|
+
<%
|
308
|
+
var user = 'Erubis';
|
309
|
+
var list = ['<aaa>', 'b&b', '"ccc"'];
|
310
|
+
%>
|
311
|
+
<p>Hello <%= user %>!</p>
|
312
|
+
<table>
|
313
|
+
<tbody>
|
314
|
+
<% var i; %>
|
315
|
+
<% for (i = 0; i < list.length; i++) { %>
|
316
|
+
<tr bgcolor=<%= ++i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
|
317
|
+
<td><%= i %></td>
|
318
|
+
<td><%= list[i] %></td>
|
319
|
+
</tr>
|
320
|
+
<% } %>
|
321
|
+
</tbody>
|
322
|
+
</table>
|
323
|
+
<%=== i %>
|
324
|
+
expected: |4
|
325
|
+
var _buf = [];
|
326
|
+
var user = 'Erubis';
|
327
|
+
var list = ['<aaa>', 'b&b', '"ccc"'];
|
328
|
+
|
329
|
+
_buf.push("<p>Hello "); _buf.push(user); _buf.push("!</p>\n\
|
330
|
+
<table>\n\
|
331
|
+
<tbody>\n");
|
332
|
+
var i;
|
333
|
+
for (i = 0; i < list.length; i++) {
|
334
|
+
_buf.push(" <tr bgcolor="); _buf.push(++i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'); _buf.push("\">\n\
|
335
|
+
<td>"); _buf.push(i); _buf.push("</td>\n\
|
336
|
+
<td>"); _buf.push(list[i]); _buf.push("</td>\n\
|
337
|
+
</tr>\n");
|
338
|
+
}
|
339
|
+
_buf.push(" </tbody>\n\
|
340
|
+
</table>\n");
|
341
|
+
alert("*** debug: i="+(i)); _buf.push("\n");
|
342
|
+
document.write(_buf.join(""));
|
343
|
+
##
|