kwartz 3.1.2 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. data/CHANGES +444 -0
  2. data/README.txt +4 -1
  3. data/bin/kwartz +2 -2
  4. data/doc-api/classes/Kwartz.html +16 -7
  5. data/doc-api/classes/Kwartz/Assertion.html +6 -6
  6. data/doc-api/classes/Kwartz/AssertionError.html +6 -6
  7. data/doc-api/classes/Kwartz/AttrInfo.html +71 -61
  8. data/doc-api/classes/Kwartz/BaseError.html +12 -12
  9. data/doc-api/classes/Kwartz/BaseTranslator.html +104 -74
  10. data/doc-api/classes/Kwartz/CharacterType.html +24 -24
  11. data/doc-api/classes/Kwartz/CommandOptionError.html +7 -7
  12. data/doc-api/classes/Kwartz/CommandOptions.html +50 -50
  13. data/doc-api/classes/Kwartz/Config.html +5 -0
  14. data/doc-api/classes/Kwartz/ConvertError.html +12 -12
  15. data/doc-api/classes/Kwartz/Converter.html +31 -33
  16. data/doc-api/classes/Kwartz/CssStyleParser.html +207 -168
  17. data/doc-api/classes/Kwartz/Defun.html +32 -31
  18. data/doc-api/classes/Kwartz/{HandlerArgument.html → Directive.html} +27 -53
  19. data/doc-api/classes/Kwartz/ElementInfo.html +68 -53
  20. data/doc-api/classes/Kwartz/EperlExpressionParser.html +185 -0
  21. data/doc-api/classes/Kwartz/EperlHandler.html +65 -58
  22. data/doc-api/classes/Kwartz/EperlTranslator.html +14 -7
  23. data/doc-api/classes/Kwartz/ErubisTranslator.html +14 -7
  24. data/doc-api/classes/Kwartz/ErubyTranslator.html +14 -7
  25. data/doc-api/classes/Kwartz/ExpandStatement.html +20 -20
  26. data/doc-api/classes/Kwartz/Expander.html +358 -0
  27. data/doc-api/classes/Kwartz/Handler.html +287 -157
  28. data/doc-api/classes/Kwartz/{StatementHelper.html → HandlerHelper.html} +307 -112
  29. data/doc-api/classes/Kwartz/Helper/ActionViewHelper.html +23 -23
  30. data/doc-api/classes/Kwartz/Helper/RailsTemplate.html +96 -96
  31. data/doc-api/classes/Kwartz/JstlExpressionParser.html +181 -0
  32. data/doc-api/classes/Kwartz/JstlHandler.html +134 -126
  33. data/doc-api/classes/Kwartz/JstlTranslator.html +21 -14
  34. data/doc-api/classes/Kwartz/KwartzError.html +6 -6
  35. data/doc-api/classes/Kwartz/Main.html +4 -4
  36. data/doc-api/classes/Kwartz/NativeExpression.html +19 -19
  37. data/doc-api/classes/Kwartz/NativeStatement.html +24 -24
  38. data/doc-api/classes/Kwartz/Node.html +7 -7
  39. data/doc-api/classes/Kwartz/PIErubisTranslator.html +21 -14
  40. data/doc-api/classes/Kwartz/ParseError.html +6 -6
  41. data/doc-api/classes/Kwartz/PerlExpressionParser.html +185 -0
  42. data/doc-api/classes/Kwartz/PerlHandler.html +353 -0
  43. data/doc-api/classes/Kwartz/PerlTranslator.html +226 -0
  44. data/doc-api/classes/Kwartz/PhpExpressionParser.html +185 -0
  45. data/doc-api/classes/Kwartz/PhpHandler.html +63 -56
  46. data/doc-api/classes/Kwartz/PhpTranslator.html +21 -14
  47. data/doc-api/classes/Kwartz/PresentationLogicParser.html +126 -123
  48. data/doc-api/classes/Kwartz/PrintStatement.html +18 -18
  49. data/doc-api/classes/Kwartz/RailsHandler.html +84 -85
  50. data/doc-api/classes/Kwartz/RailsTranslator.html +13 -6
  51. data/doc-api/classes/Kwartz/RubyExpressionParser.html +180 -0
  52. data/doc-api/classes/Kwartz/RubyHandler.html +73 -69
  53. data/doc-api/classes/Kwartz/RubyStyleParser.html +86 -86
  54. data/doc-api/classes/Kwartz/RubyTranslator.html +28 -21
  55. data/doc-api/classes/Kwartz/Ruleset.html +622 -1
  56. data/doc-api/classes/Kwartz/StrutsTranslator.html +14 -14
  57. data/doc-api/classes/Kwartz/TagInfo.html +52 -27
  58. data/doc-api/classes/Kwartz/TextConverter.html +75 -37
  59. data/doc-api/classes/Kwartz/Translator.html +54 -53
  60. data/doc-api/classes/Kwartz/Util.html +25 -25
  61. data/doc-api/created.rid +1 -1
  62. data/doc-api/files/__/README_txt.html +7 -2
  63. data/doc-api/files/kwartz/assert_rb.html +2 -2
  64. data/doc-api/files/kwartz/binding/eperl_rb.html +2 -2
  65. data/doc-api/files/kwartz/binding/erubis_rb.html +2 -2
  66. data/doc-api/files/kwartz/binding/eruby_rb.html +2 -2
  67. data/doc-api/files/kwartz/binding/jstl_rb.html +2 -2
  68. data/doc-api/files/kwartz/binding/perl_rb.html +115 -0
  69. data/doc-api/files/kwartz/binding/php_rb.html +2 -2
  70. data/doc-api/files/kwartz/binding/pierubis_rb.html +2 -2
  71. data/doc-api/files/kwartz/binding/rails_rb.html +2 -2
  72. data/doc-api/files/kwartz/binding/ruby_rb.html +2 -2
  73. data/doc-api/files/kwartz/binding/struts_rb.html +2 -2
  74. data/doc-api/files/kwartz/config_rb.html +2 -2
  75. data/doc-api/files/kwartz/converter_rb.html +2 -2
  76. data/doc-api/files/kwartz/defun_rb.html +2 -2
  77. data/doc-api/files/kwartz/error_rb.html +2 -2
  78. data/doc-api/files/kwartz/helper/rails_rb.html +2 -2
  79. data/doc-api/files/kwartz/main_rb.html +3 -2
  80. data/doc-api/files/kwartz/node_rb.html +2 -2
  81. data/doc-api/files/kwartz/parser_rb.html +2 -2
  82. data/doc-api/files/kwartz/translator_rb.html +2 -2
  83. data/doc-api/files/kwartz/util/assert-text-equal_rb.html +2 -2
  84. data/doc-api/files/kwartz/util/testcase-helper_rb.html +2 -2
  85. data/doc-api/files/kwartz/util_rb.html +2 -2
  86. data/doc-api/files/kwartz_rb.html +2 -2
  87. data/doc-api/fr_class_index.html +10 -5
  88. data/doc-api/fr_file_index.html +1 -0
  89. data/doc-api/fr_method_index.html +268 -239
  90. data/doc/docstyle.css +9 -3
  91. data/doc/img/fig05.png +0 -0
  92. data/doc/introduction-to-kwartz.html +3040 -0
  93. data/doc/pattern-catalog.html +5 -3
  94. data/doc/reference.html +680 -26
  95. data/doc/users-guide.html +222 -67
  96. data/kwartz.gemspec +4 -4
  97. data/lib/kwartz.rb +3 -3
  98. data/lib/kwartz/assert.rb +2 -2
  99. data/lib/kwartz/binding/eperl.rb +71 -31
  100. data/lib/kwartz/binding/erubis.rb +3 -2
  101. data/lib/kwartz/binding/eruby.rb +3 -2
  102. data/lib/kwartz/binding/jstl.rb +66 -29
  103. data/lib/kwartz/binding/perl.rb +230 -0
  104. data/lib/kwartz/binding/php.rb +69 -29
  105. data/lib/kwartz/binding/pierubis.rb +3 -2
  106. data/lib/kwartz/binding/rails.rb +18 -18
  107. data/lib/kwartz/binding/ruby.rb +74 -42
  108. data/lib/kwartz/binding/struts.rb +22 -21
  109. data/lib/kwartz/config.rb +4 -4
  110. data/lib/kwartz/converter.rb +465 -345
  111. data/lib/kwartz/defun.rb +2 -2
  112. data/lib/kwartz/error.rb +2 -2
  113. data/lib/kwartz/helper/rails.rb +2 -2
  114. data/lib/kwartz/main.rb +5 -4
  115. data/lib/kwartz/node.rb +92 -144
  116. data/lib/kwartz/parser.rb +112 -103
  117. data/lib/kwartz/translator.rb +14 -6
  118. data/lib/kwartz/util.rb +2 -2
  119. data/lib/kwartz/util/assert-text-equal.rb +2 -2
  120. data/lib/kwartz/util/testcase-helper.rb +1 -1
  121. data/test/test-compile.rb +2 -2
  122. data/test/test-compile.yaml +81 -0
  123. data/test/test-converter.rb +4 -8
  124. data/test/test-converter.yaml +152 -3
  125. data/test/test-directives.rb +2 -2
  126. data/test/test-directives.yaml +222 -0
  127. data/test/test-main.rb +6 -4
  128. data/test/test-main.yaml +66 -1
  129. data/test/test-parser.rb +12 -3
  130. data/test/test-parser.yaml +64 -51
  131. data/test/test-rails.rb +2 -2
  132. data/test/test-ruleset.rb +2 -2
  133. data/test/test-ruleset.yaml +465 -4
  134. data/test/test.log +6 -0
  135. data/test/test.rb +2 -2
  136. metadata +116 -106
  137. data/ChangeLog +0 -156
  138. data/doc-api/classes/Kwartz/DocumentRuleset.html +0 -369
  139. data/doc-api/classes/Kwartz/ElementExpander.html +0 -325
  140. data/doc-api/classes/Kwartz/ElementRuleset.html +0 -612
@@ -1,6 +1,6 @@
1
1
  ####
2
- #### $Rev: 128 $
3
- #### $Release: 3.1.2 $
2
+ #### $Rev$
3
+ #### $Release: 3.2.0 $
4
4
  #### copyright(c) 2004-2006 kuwata-lab.com all rights reserved
5
5
  ####
6
6
 
@@ -152,15 +152,16 @@ module Kwartz
152
152
 
153
153
  def parse_embedded_expr(text)
154
154
  pos = 0
155
- text.scan(/@(!*)\{(.*?)\}@/) do |indicator, expr_code|
155
+ text.scan(/@(!*)\{(.*?)\}@/) do |indicator, expr_str|
156
156
  m = Regexp.last_match
157
157
  s = text[pos, m.begin(0) - pos]
158
158
  pos = m.end(0)
159
159
  translate_string(s) unless s.empty?
160
+ expr_str = parse_expr_str!(expr_str)
160
161
  case indicator
161
- when nil, '' ; add_escaped_expr(expr_code)
162
- when '!' ; add_plain_expr(expr_code)
163
- when '!!' ; add_debug_expr(expr_code)
162
+ when nil, '' ; add_escaped_expr(expr_str)
163
+ when '!' ; add_plain_expr(expr_str)
164
+ when '!!' ; add_debug_expr(expr_str)
164
165
  else ; # do nothing
165
166
  end
166
167
  end
@@ -169,6 +170,13 @@ module Kwartz
169
170
  end
170
171
 
171
172
 
173
+ ## (abstract) convert expression to native expression string.
174
+ ## ex. 'item.name' => '$item->name', '$item->name' => '$item->name'
175
+ def parse_expr_str!(expr_str)
176
+ not_implemented
177
+ end
178
+
179
+
172
180
  def add_plain_expr(expr_code)
173
181
  @sb << @expr_l << expr_code << @expr_r # ex. <%= expr_code %>
174
182
  end
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Rev: 126 $
3
- ### $Release: 3.1.2 $
2
+ ### $Rev$
3
+ ### $Release: 3.2.0 $
4
4
  ### copyright(c) 2004-2006 kuwata-lab.com all rights reserved
5
5
  ###
6
6
 
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Rev: 117 $
3
- ### $Release: 3.1.2 $
2
+ ### $Rev$
3
+ ### $Release: 3.2.0 $
4
4
  ### copyright(c) 2004-2006 kuwata-lab.com all rights reserved
5
5
  ###
6
6
 
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release: 3.1.2 $
3
+ ### $Release: 3.2.0 $
4
4
  ### copyright(c) 2004-2006 kuwata-lab.com all rights reserved
5
5
  ###
6
6
 
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Rev: 128 $
3
- ### $Release: 3.1.2 $
2
+ ### $Rev$
3
+ ### $Release: 3.2.0 $
4
4
  ### copyright(c) 2004-2006 kuwata-lab.com all rights reserved
5
5
  ###
6
6
 
@@ -306,3 +306,84 @@
306
306
  eperl: |
307
307
  <a href="mailto:<?= $email !>"><?= encode_entities($name) !></a>
308
308
  <a href="mailto:<?= $email !>"><?= encode_entities($name) !></a>
309
+
310
+ ###
311
+ - name: embedded_expr2
312
+ desc: common expression string
313
+ pdata: |
314
+ @{variable}@
315
+ @{object.property}@
316
+ @{hash['key']}@
317
+ @{hash["key"]}@
318
+ @{hash[:key]}@
319
+ @{array[0]}@
320
+ @{array[index]}@
321
+ @{$unknown->style}@
322
+ plogic: |
323
+ expected*:
324
+ ruby: |
325
+ _buf = ""; _buf << ERB::Util.h(variable); _buf << "\n";
326
+ _buf << ERB::Util.h(object.property); _buf << "\n";
327
+ _buf << ERB::Util.h(hash['key']); _buf << "\n";
328
+ _buf << ERB::Util.h(hash["key"]); _buf << "\n";
329
+ _buf << ERB::Util.h(hash[:key]); _buf << "\n";
330
+ _buf << ERB::Util.h(array[0]); _buf << "\n";
331
+ _buf << ERB::Util.h(array[index]); _buf << "\n";
332
+ _buf << ERB::Util.h($unknown->style); _buf << "\n";
333
+ ; _buf
334
+ eruby: |
335
+ <%=h variable %>
336
+ <%=h object.property %>
337
+ <%=h hash['key'] %>
338
+ <%=h hash["key"] %>
339
+ <%=h hash[:key] %>
340
+ <%=h array[0] %>
341
+ <%=h array[index] %>
342
+ <%=h $unknown->style %>
343
+ erubis: |
344
+ <%== variable %>
345
+ <%== object.property %>
346
+ <%== hash['key'] %>
347
+ <%== hash["key"] %>
348
+ <%== hash[:key] %>
349
+ <%== array[0] %>
350
+ <%== array[index] %>
351
+ <%== $unknown->style %>
352
+ pierubis: |
353
+ @{variable}@
354
+ @{object.property}@
355
+ @{hash['key']}@
356
+ @{hash["key"]}@
357
+ @{hash[:key]}@
358
+ @{array[0]}@
359
+ @{array[index]}@
360
+ @{$unknown->style}@
361
+ php: |
362
+ <?php echo htmlspecialchars($variable); ?>
363
+ <?php echo htmlspecialchars($object->property); ?>
364
+ <?php echo htmlspecialchars($hash['key']); ?>
365
+ <?php echo htmlspecialchars($hash["key"]); ?>
366
+ <?php echo htmlspecialchars($hash['key']); ?>
367
+ <?php echo htmlspecialchars($array[0]); ?>
368
+ <?php echo htmlspecialchars($array[$index]); ?>
369
+ <?php echo htmlspecialchars($unknown->style); ?>
370
+ jstl: |
371
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
372
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
373
+ ${variable}
374
+ ${object.property}
375
+ ${hash['key']}
376
+ ${hash["key"]}
377
+ ${hash['key']}
378
+ ${array[0]}
379
+ ${array[index]}
380
+ ${$unknown->style}
381
+ eperl: |
382
+ <?= encode_entities($variable) !>
383
+ <?= encode_entities($object->{property}) !>
384
+ <?= encode_entities($hash{'key'}) !>
385
+ <?= encode_entities($hash{"key"}) !>
386
+ <?= encode_entities($hash{'key'}) !>
387
+ <?= encode_entities($array[0]) !>
388
+ <?= encode_entities($array[$index]) !>
389
+ <?= encode_entities($unknown->style) !>
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Rev: 141 $
3
- ### $Release: 3.1.2 $
2
+ ### $Rev$
3
+ ### $Release: 3.2.0 $
4
4
  ### copyright(c) 2004-2006 kuwata-lab.com all rights reserved
5
5
  ###
6
6
 
@@ -18,12 +18,8 @@ class ConverterTest < Test::Unit::TestCase
18
18
 
19
19
 
20
20
  def _test
21
- (@properties ||= {}).each do |key, val|
22
- if key.is_a?(String)
23
- key = key.intern
24
- @properties.delete(key)
25
- @properties[key] = val
26
- end
21
+ (@properties ||= {}).keys.each do |key|
22
+ @properties[key.intern] = @properties.delete(key) if key.is_a?(String)
27
23
  end
28
24
  parser = Kwartz::PresentationLogicParser.get_class('css').new
29
25
  ruleset_list = parser.parse(@plogic.to_s)
@@ -118,8 +118,8 @@
118
118
  # --------------------------------------------------------------------------------
119
119
 
120
120
  ###
121
- - name: convert11
122
- desc: pdata and plogic
121
+ - name: selector1
122
+ desc: selectr - marking
123
123
  pdata: |
124
124
  <ul id="mark:list">
125
125
  <li id="mark:item">foo</li>
@@ -148,7 +148,105 @@
148
148
 
149
149
 
150
150
  ###
151
- - name: convert12
151
+ - name: selector2
152
+ desc: selectr - class name
153
+ pdata: |
154
+ <ul class="list">
155
+ <li class="item">foo</li>
156
+ </ul>
157
+ plogic: |
158
+ .list {
159
+ logic: {
160
+ _stag;
161
+ foreach (item in list) {
162
+ _cont;
163
+ }
164
+ _etag;
165
+ }
166
+ }
167
+ .item {
168
+ value: item;
169
+ }
170
+ expected: |
171
+ print("<ul class=\"list\">\n")
172
+ <% foreach (item in list) {%>
173
+ print(" <li class=\"item\">")
174
+ print(<%=item%>)
175
+ print("</li>\n")
176
+ <% }%>
177
+ print("</ul>\n")
178
+
179
+
180
+ ###
181
+ - name: selector3
182
+ desc: selectr - tag name
183
+ pdata: |
184
+ <ul>
185
+ <html:li>foo</html:li>
186
+ </ul>
187
+ plogic: |
188
+ ul {
189
+ logic: {
190
+ _stag;
191
+ foreach (item in list) {
192
+ _cont;
193
+ }
194
+ _etag;
195
+ }
196
+ }
197
+ html:li {
198
+ value: item;
199
+ }
200
+ expected: |
201
+ print("<ul>\n")
202
+ <% foreach (item in list) {%>
203
+ print(" <html:li>")
204
+ print(<%=item%>)
205
+ print("</html:li>\n")
206
+ <% }%>
207
+ print("</ul>\n")
208
+
209
+
210
+ ###
211
+ - name: selector4
212
+ desc: selectr - combination of marking, classname, and tagname
213
+ pdata: |
214
+ <ul id="mark:list">
215
+ <ol>
216
+ <li class="item">foo</li>
217
+ </ol>
218
+ </ul>
219
+ plogic: |
220
+ #list, ol, .item {
221
+ logic: {
222
+ foreach (item in list) {
223
+ _elem
224
+ }
225
+ }
226
+ }
227
+ li {
228
+ value: item;
229
+ }
230
+ expected: |
231
+ <% foreach (item in list) {%>
232
+ print("<ul>\n")
233
+ <% foreach (item in list) {%>
234
+ print(" <ol>\n")
235
+ <% foreach (item in list) {%>
236
+ print(" <li class=\"item\">")
237
+ print(<%=item%>)
238
+ print("</li>\n")
239
+ <% }%>
240
+ print(" </ol>\n")
241
+ <% }%>
242
+ print("</ul>\n")
243
+ <% }%>
244
+
245
+
246
+ # --------------------------------------------------------------------------------
247
+
248
+ ###
249
+ - name: convert11
152
250
  desc: empty logic
153
251
  pdata: |
154
252
  <div>
@@ -168,6 +266,57 @@
168
266
  print("<div>\n")
169
267
  print("</div>\n")
170
268
 
269
+ ###
270
+ - name: convert12
271
+ desc: "'#DOCUMENT' and 'logic:'"
272
+ pdata: |
273
+ <html>
274
+ <body>
275
+ <h1 id="mark:title">...title...</h1>
276
+ <p>...</p>
277
+ <div id="mark:content">
278
+ <table>
279
+ <tr id="mark:list">
280
+ <td id="mark:item"></td>
281
+ </tr>
282
+ </table>
283
+ </div>
284
+ </body>
285
+ </html>
286
+ plogic: |
287
+ #DOCUMENT {
288
+ logic: {
289
+ _element(title)
290
+ _content(content)
291
+ }
292
+ }
293
+ #title {
294
+ value: title;
295
+ }
296
+ #list {
297
+ logic: {
298
+ for item in list
299
+ _elem
300
+ end
301
+ }
302
+ }
303
+ #item {
304
+ value: item;
305
+ }
306
+ expected: |
307
+ print(" <h1>")
308
+ print(<%=title%>)
309
+ print("</h1>\n")
310
+ print(" <table>\n")
311
+ <% for item in list%>
312
+ print(" <tr>\n")
313
+ print(" <td>")
314
+ print(<%=item%>)
315
+ print("</td>\n")
316
+ print(" </tr>\n")
317
+ <% end%>
318
+ print(" </table>\n")
319
+
171
320
 
172
321
  # --------------------------------------------------------------------------------
173
322
 
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Rev: 117 $
3
- ### $Release: 3.1.2 $
2
+ ### $Rev$
3
+ ### $Release: 3.2.0 $
4
4
  ### copyright(c) 2004-2006 kuwata-lab.com all rights reserved
5
5
  ###
6
6
 
@@ -50,6 +50,7 @@
50
50
  {{*${expr}*}}
51
51
  {{*<c:out value="${expr}" escapeXml="false"/>*}}
52
52
 
53
+
53
54
  ###
54
55
  - name: stag
55
56
  subject: stag, Stag, STAG
@@ -102,6 +103,8 @@
102
103
  {{*${expr}*}}foo</b>
103
104
  {{*<c:out value="${expr}" escapeXml="false"/>*}}foo</b>
104
105
 
106
+
107
+ ###
105
108
  - name: etag
106
109
  subject: etag, Etag, ETAG
107
110
  desc: |
@@ -153,6 +156,7 @@
153
156
  <b>foo{{*${expr}*}}
154
157
  <b>foo{{*<c:out value="${expr}" escapeXml="false"/>*}}
155
158
 
159
+
156
160
  ###
157
161
  - name: cont
158
162
  subject: cont, Cont, CONT
@@ -205,6 +209,7 @@
205
209
  <b>{{*${expr}*}}</b>
206
210
  <b>{{*<c:out value="${expr}" escapeXml="false"/>*}}</b>
207
211
 
212
+
208
213
  ###
209
214
  - name: value
210
215
  subject: value, Value, VALUE
@@ -254,6 +259,7 @@
254
259
  <b>{{*${expr}*}}</b>
255
260
  <b>{{*<c:out value="${expr}" escapeXml="false"/>*}}</b>
256
261
 
262
+
257
263
  ###
258
264
  - name: foreach
259
265
  subject: foreach
@@ -369,6 +375,7 @@
369
375
  </tr>
370
376
  {{*</c:forEach>*}}
371
377
 
378
+
372
379
  ###
373
380
  - name: list
374
381
  subject: list
@@ -462,6 +469,7 @@
462
469
  {{*</c:forEach>*}}
463
470
  </tr>
464
471
 
472
+
465
473
  ###
466
474
  - name: foreach_ctr
467
475
  subject: Foreach, List
@@ -573,6 +581,7 @@
573
581
  {{*</c:forEach>*}}
574
582
  </tr>
575
583
 
584
+
576
585
  ###
577
586
  - name: foreach_tgl
578
587
  subject: FOREACH, LIST
@@ -695,6 +704,7 @@
695
704
  {{*</c:forEach>*}}
696
705
  </tr>
697
706
 
707
+
698
708
  ###
699
709
  - name: while
700
710
  subject: while, loop
@@ -779,6 +789,7 @@
779
789
  jstl: |
780
790
  *** not supported ***
781
791
 
792
+
782
793
  ###
783
794
  - name: if
784
795
  subject: if-then-else
@@ -894,6 +905,7 @@
894
905
  </div>
895
906
  {{*</c:otherwise></c:choose>*}}
896
907
 
908
+
897
909
  ###
898
910
  - name: set
899
911
  subject: set
@@ -946,6 +958,7 @@
946
958
  <td>${color}</td>
947
959
  </tr>
948
960
 
961
+
949
962
  ###
950
963
  - name: mark
951
964
  subject: mark
@@ -998,6 +1011,7 @@
998
1011
  <li>foo</li>
999
1012
  </ul>
1000
1013
 
1014
+
1001
1015
  ###
1002
1016
  - name: attr
1003
1017
  subject: attr, Attr, ATTR
@@ -1075,6 +1089,7 @@
1075
1089
  </tr>
1076
1090
  </c:forEach>
1077
1091
 
1092
+
1078
1093
  ###
1079
1094
  - name: append
1080
1095
  subject: append, Append, APPEND
@@ -1129,6 +1144,7 @@
1129
1144
  <input type="checkbox"{{*${flag1 ? ' checked=\'checked\'' : ''}*}}>
1130
1145
  # <input type="checkbox" name="flag" value="y"${flag1 ? ' checked=\'checked\'' : ''}>
1131
1146
 
1147
+
1132
1148
  ###
1133
1149
  - name: dummy
1134
1150
  subject: dummy
@@ -1188,6 +1204,7 @@
1188
1204
  <li>foo</li>
1189
1205
  </ul>
1190
1206
 
1207
+
1191
1208
  ###
1192
1209
  - name: default
1193
1210
  subject: default, Default, DEFAULT
@@ -1225,6 +1242,7 @@
1225
1242
  jstl: |
1226
1243
  name: <em>{{*<c:out value="${user}" default="Guest"/>*}}</em>
1227
1244
 
1245
+
1228
1246
  ###
1229
1247
  - name: replace
1230
1248
  common: yes
@@ -1300,6 +1318,7 @@
1300
1318
 
1301
1319
  jstl: *replace1_expected
1302
1320
 
1321
+
1303
1322
  ###
1304
1323
  - name: replace2
1305
1324
  hide: yes
@@ -1394,3 +1413,206 @@
1394
1413
  eperl: *expected1
1395
1414
 
1396
1415
  jstl: *expected1
1416
+
1417
+
1418
+ ###
1419
+ - name: expr
1420
+ subject: Language-independent Directive
1421
+ desc: |
1422
+ Some directives can be language-independent.
1423
+
1424
+ .* 'mark' and 'replace_(element|content)_with_(element|content)' directives can be
1425
+ language-independent because their argument is element name which is
1426
+ language-independent.
1427
+ .* 'dummy' directive can be language-independent because it takes dummy argument.
1428
+ .* 'value', 'elem', 'stag', 'etag', 'cont', and 'default' directives can be
1429
+ language-independent if their expression argument is one of the following format.
1430
+ .- {{,variable,}}
1431
+ .- {{,object.property,}}
1432
+ .- {{,hash['key'],}}, {{,hash["key"],}}, {{,hash[:key],}}
1433
+ .- {{,array[123],}}, {{,array[var],}}
1434
+
1435
+ Language-independent directives are always described with id attribute.
1436
+
1437
+ pdata*:
1438
+ eruby: &expr_pdata|
1439
+ <p id="value:user">foo</p>
1440
+ <p id="value:user.name">foo</p>
1441
+ <p id="value:user['name']">foo</p>
1442
+ <p id="value:user[:name]">foo</p>
1443
+ <p id="value:user[0]">foo</p>
1444
+ <p id="value:user[index]">foo</p>
1445
+ php: *expr_pdata
1446
+ jstl: *expr_pdata
1447
+ eperl: *expr_pdata
1448
+
1449
+ expected*:
1450
+ eruby: |
1451
+ <p><%= user %></p>
1452
+ <p><%= user.name %></p>
1453
+ <p><%= user['name'] %></p>
1454
+ <p><%= user[:name] %></p>
1455
+ <p><%= user[0] %></p>
1456
+ <p><%= user[index] %></p>
1457
+
1458
+ php: |
1459
+ <p><?php echo $user; ?></p>
1460
+ <p><?php echo $user->name; ?></p>
1461
+ <p><?php echo $user['name']; ?></p>
1462
+ <p><?php echo $user['name']; ?></p>
1463
+ <p><?php echo $user[0]; ?></p>
1464
+ <p><?php echo $user[$index]; ?></p>
1465
+
1466
+ eperl: |
1467
+ <p><?= $user !></p>
1468
+ <p><?= $user->{name} !></p>
1469
+ <p><?= $user{'name'} !></p>
1470
+ <p><?= $user{'name'} !></p>
1471
+ <p><?= $user[0] !></p>
1472
+ <p><?= $user[$index] !></p>
1473
+
1474
+ jstl: |
1475
+ <p>${user}</p>
1476
+ <p>${user.name}</p>
1477
+ <p>${user['name']}</p>
1478
+ <p>${user['name']}</p>
1479
+ <p>${user[0]}</p>
1480
+ <p>${user[index]}</p>
1481
+
1482
+
1483
+ ###
1484
+ - name: expr2
1485
+ hide: yes
1486
+ subject: Language-independent Directive
1487
+ desc: |
1488
+
1489
+ pdata*:
1490
+ eruby: &expr2_pdata |
1491
+ <p id="value:user.name">foo</p>
1492
+ <p id="Value:user['name']">foo</p>
1493
+ <p id="VALUE:user[:name]">foo</p>
1494
+
1495
+ <p id="elem:user.name">foo</p>
1496
+ <p id="Elem:user['name']">foo</p>
1497
+ <p id="ELEM:user[:name]">foo</p>
1498
+
1499
+ <p id="cont:user.name">foo</p>
1500
+ <p id="Cont:user['name']">foo</p>
1501
+ <p id="CONT:user[:name]">foo</p>
1502
+
1503
+ <p id="stag:user.name">foo</p>
1504
+ <p id="Stag:user['name']">foo</p>
1505
+ <p id="STAG:user[:name]">foo</p>
1506
+
1507
+ <p id="etag:user.name">foo</p>
1508
+ <p id="Etag:user['name']">foo</p>
1509
+ <p id="ETAG:user[:name]">foo</p>
1510
+
1511
+ <p id="default:user.name">foo</p>
1512
+ <p id="Default:user['name']">foo</p>
1513
+ <p id="DEFAULT:user[:name]">foo</p>
1514
+ php: *expr2_pdata
1515
+ jstl: *expr2_pdata
1516
+ eperl: *expr2_pdata
1517
+
1518
+ expected*:
1519
+ eruby: |
1520
+ <p><%= user.name %></p>
1521
+ <p><%=h user['name'] %></p>
1522
+ <p><%= user[:name] %></p>
1523
+
1524
+ <%= user.name %>
1525
+ <%=h user['name'] %>
1526
+ <%= user[:name] %>
1527
+
1528
+ <p><%= user.name %></p>
1529
+ <p><%=h user['name'] %></p>
1530
+ <p><%= user[:name] %></p>
1531
+
1532
+ <%= user.name %>foo</p>
1533
+ <%=h user['name'] %>foo</p>
1534
+ <%= user[:name] %>foo</p>
1535
+
1536
+ <p>foo<%= user.name %>
1537
+ <p>foo<%=h user['name'] %>
1538
+ <p>foo<%= user[:name] %>
1539
+
1540
+ <p><% if (user.name) && !(user.name).to_s.empty? then %><%= user.name %><% else %>foo<% end %></p>
1541
+ <p><% if (user['name']) && !(user['name']).to_s.empty? then %><%=h user['name'] %><% else %>foo<% end %></p>
1542
+ <p><% if (user[:name]) && !(user[:name]).to_s.empty? then %><%= user[:name] %><% else %>foo<% end %></p>
1543
+
1544
+ php: |
1545
+ <p><?php echo $user->name; ?></p>
1546
+ <p><?php echo htmlspecialchars($user['name']); ?></p>
1547
+ <p><?php echo $user['name']; ?></p>
1548
+
1549
+ <?php echo $user->name; ?>
1550
+ <?php echo htmlspecialchars($user['name']); ?>
1551
+ <?php echo $user['name']; ?>
1552
+
1553
+ <p><?php echo $user->name; ?></p>
1554
+ <p><?php echo htmlspecialchars($user['name']); ?></p>
1555
+ <p><?php echo $user['name']; ?></p>
1556
+
1557
+ <?php echo $user->name; ?>foo</p>
1558
+ <?php echo htmlspecialchars($user['name']); ?>foo</p>
1559
+ <?php echo $user['name']; ?>foo</p>
1560
+
1561
+ <p>foo<?php echo $user->name; ?>
1562
+ <p>foo<?php echo htmlspecialchars($user['name']); ?>
1563
+ <p>foo<?php echo $user['name']; ?>
1564
+
1565
+ <p><?php if ($user->name) { ?><?php echo $user->name; ?><?php } else { ?>foo<?php } ?></p>
1566
+ <p><?php if ($user['name']) { ?><?php echo htmlspecialchars($user['name']); ?><?php } else { ?>foo<?php } ?></p>
1567
+ <p><?php if ($user['name']) { ?><?php echo $user['name']; ?><?php } else { ?>foo<?php } ?></p>
1568
+
1569
+ eperl: |
1570
+ <p><?= $user->{name} !></p>
1571
+ <p><?= encode_entities($user{'name'}) !></p>
1572
+ <p><?= $user{'name'} !></p>
1573
+
1574
+ <?= $user->{name} !>
1575
+ <?= encode_entities($user{'name'}) !>
1576
+ <?= $user{'name'} !>
1577
+
1578
+ <p><?= $user->{name} !></p>
1579
+ <p><?= encode_entities($user{'name'}) !></p>
1580
+ <p><?= $user{'name'} !></p>
1581
+
1582
+ <?= $user->{name} !>foo</p>
1583
+ <?= encode_entities($user{'name'}) !>foo</p>
1584
+ <?= $user{'name'} !>foo</p>
1585
+
1586
+ <p>foo<?= $user->{name} !>
1587
+ <p>foo<?= encode_entities($user{'name'}) !>
1588
+ <p>foo<?= $user{'name'} !>
1589
+
1590
+ <p><? if ($user->{name}) { !><?= $user->{name} !><? } else { !>foo<? } !></p>
1591
+ <p><? if ($user{'name'}) { !><?= encode_entities($user{'name'}) !><? } else { !>foo<? } !></p>
1592
+ <p><? if ($user{'name'}) { !><?= $user{'name'} !><? } else { !>foo<? } !></p>
1593
+
1594
+ jstl: |
1595
+ <p>${user.name}</p>
1596
+ <p>${user['name']}</p>
1597
+ <p><c:out value="${user['name']}" escapeXml="false"/></p>
1598
+
1599
+ ${user.name}
1600
+ ${user['name']}
1601
+ <c:out value="${user['name']}" escapeXml="false"/>
1602
+
1603
+ <p>${user.name}</p>
1604
+ <p>${user['name']}</p>
1605
+ <p><c:out value="${user['name']}" escapeXml="false"/></p>
1606
+
1607
+ ${user.name}foo</p>
1608
+ ${user['name']}foo</p>
1609
+ <c:out value="${user['name']}" escapeXml="false"/>foo</p>
1610
+
1611
+ <p>foo${user.name}
1612
+ <p>foo${user['name']}
1613
+ <p>foo<c:out value="${user['name']}" escapeXml="false"/>
1614
+
1615
+ <p><c:out value="${user.name}" default="foo"/></p>
1616
+ <p><c:out value="${user['name']}" escapeXml="true" default="foo"/></p>
1617
+ <p><c:out value="${user['name']}" escapeXml="false" default="foo"/></p>
1618
+