kwartz 3.0.0

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.
Files changed (169) hide show
  1. data/COPYING +340 -0
  2. data/ChangeLog +103 -0
  3. data/README.txt +37 -0
  4. data/bin/kwartz +12 -0
  5. data/doc-api/classes/Kwartz.html +218 -0
  6. data/doc-api/classes/Kwartz/Assertion.html +140 -0
  7. data/doc-api/classes/Kwartz/AssertionError.html +148 -0
  8. data/doc-api/classes/Kwartz/AttrInfo.html +320 -0
  9. data/doc-api/classes/Kwartz/BaseError.html +206 -0
  10. data/doc-api/classes/Kwartz/BaseTranslator.html +331 -0
  11. data/doc-api/classes/Kwartz/CharacterType.html +212 -0
  12. data/doc-api/classes/Kwartz/CommandOptionError.html +154 -0
  13. data/doc-api/classes/Kwartz/CommandOptions.html +374 -0
  14. data/doc-api/classes/Kwartz/Config.html +150 -0
  15. data/doc-api/classes/Kwartz/ConvertError.html +191 -0
  16. data/doc-api/classes/Kwartz/Converter.html +252 -0
  17. data/doc-api/classes/Kwartz/CssStyleParser.html +483 -0
  18. data/doc-api/classes/Kwartz/DocumentRuleset.html +369 -0
  19. data/doc-api/classes/Kwartz/ElementExpander.html +325 -0
  20. data/doc-api/classes/Kwartz/ElementInfo.html +312 -0
  21. data/doc-api/classes/Kwartz/ElementRuleset.html +582 -0
  22. data/doc-api/classes/Kwartz/EperlHandler.html +338 -0
  23. data/doc-api/classes/Kwartz/EperlTranslator.html +167 -0
  24. data/doc-api/classes/Kwartz/ErubisHandler.html +113 -0
  25. data/doc-api/classes/Kwartz/ErubisTranslator.html +168 -0
  26. data/doc-api/classes/Kwartz/ErubyHandler.html +337 -0
  27. data/doc-api/classes/Kwartz/ErubyTranslator.html +167 -0
  28. data/doc-api/classes/Kwartz/ExpandStatement.html +227 -0
  29. data/doc-api/classes/Kwartz/Expression.html +119 -0
  30. data/doc-api/classes/Kwartz/Handler.html +558 -0
  31. data/doc-api/classes/Kwartz/JstlHandler.html +657 -0
  32. data/doc-api/classes/Kwartz/JstlTranslator.html +226 -0
  33. data/doc-api/classes/Kwartz/KwartzError.html +146 -0
  34. data/doc-api/classes/Kwartz/Main.html +384 -0
  35. data/doc-api/classes/Kwartz/NativeExpression.html +236 -0
  36. data/doc-api/classes/Kwartz/NativeStatement.html +254 -0
  37. data/doc-api/classes/Kwartz/Node.html +156 -0
  38. data/doc-api/classes/Kwartz/ParseError.html +148 -0
  39. data/doc-api/classes/Kwartz/PhpHandler.html +333 -0
  40. data/doc-api/classes/Kwartz/PhpTranslator.html +194 -0
  41. data/doc-api/classes/Kwartz/PresentationLogicParser.html +830 -0
  42. data/doc-api/classes/Kwartz/PrintStatement.html +221 -0
  43. data/doc-api/classes/Kwartz/RailsHandler.html +587 -0
  44. data/doc-api/classes/Kwartz/RailsTranslator.html +167 -0
  45. data/doc-api/classes/Kwartz/RubyStyleParser.html +558 -0
  46. data/doc-api/classes/Kwartz/Ruleset.html +117 -0
  47. data/doc-api/classes/Kwartz/Statement.html +119 -0
  48. data/doc-api/classes/Kwartz/StrutsTranslator.html +190 -0
  49. data/doc-api/classes/Kwartz/TagInfo.html +314 -0
  50. data/doc-api/classes/Kwartz/TextConverter.html +270 -0
  51. data/doc-api/classes/Kwartz/Translator.html +318 -0
  52. data/doc-api/classes/Test.html +107 -0
  53. data/doc-api/classes/Test/Unit.html +101 -0
  54. data/doc-api/created.rid +1 -0
  55. data/doc-api/files/__/README_txt.html +150 -0
  56. data/doc-api/files/kwartz/assert_rb.html +114 -0
  57. data/doc-api/files/kwartz/binding/eperl_rb.html +116 -0
  58. data/doc-api/files/kwartz/binding/erubis_rb.html +116 -0
  59. data/doc-api/files/kwartz/binding/eruby_rb.html +115 -0
  60. data/doc-api/files/kwartz/binding/jstl_rb.html +116 -0
  61. data/doc-api/files/kwartz/binding/php_rb.html +116 -0
  62. data/doc-api/files/kwartz/binding/rails_rb.html +115 -0
  63. data/doc-api/files/kwartz/binding/struts_rb.html +117 -0
  64. data/doc-api/files/kwartz/config_rb.html +107 -0
  65. data/doc-api/files/kwartz/converter_rb.html +119 -0
  66. data/doc-api/files/kwartz/error_rb.html +107 -0
  67. data/doc-api/files/kwartz/main_rb.html +124 -0
  68. data/doc-api/files/kwartz/node_rb.html +114 -0
  69. data/doc-api/files/kwartz/parser_rb.html +117 -0
  70. data/doc-api/files/kwartz/translator_rb.html +115 -0
  71. data/doc-api/files/kwartz/util/assert-text-equal_rb.html +115 -0
  72. data/doc-api/files/kwartz/util/testcase-helper_rb.html +115 -0
  73. data/doc-api/files/kwartz_rb.html +120 -0
  74. data/doc-api/fr_class_index.html +75 -0
  75. data/doc-api/fr_file_index.html +45 -0
  76. data/doc-api/fr_method_index.html +216 -0
  77. data/doc-api/index.html +24 -0
  78. data/doc-api/rdoc-style.css +208 -0
  79. data/doc/docstyle.css +188 -0
  80. data/doc/p-pattern.html +1207 -0
  81. data/doc/reference.html +3396 -0
  82. data/doc/users-guide.html +1670 -0
  83. data/examples/breadcrumbs1/Makefile +15 -0
  84. data/examples/breadcrumbs1/breadcrumbs.eruby.plogic +27 -0
  85. data/examples/breadcrumbs1/breadcrumbs.html +12 -0
  86. data/examples/breadcrumbs1/breadcrumbs.jstl.plogic +28 -0
  87. data/examples/breadcrumbs1/breadcrumbs.php.plogic +26 -0
  88. data/examples/breadcrumbs1/main.php +12 -0
  89. data/examples/breadcrumbs1/main.rb +12 -0
  90. data/examples/breadcrumbs2/Makefile +15 -0
  91. data/examples/breadcrumbs2/breadcrumbs.eruby.plogic +22 -0
  92. data/examples/breadcrumbs2/breadcrumbs.html +14 -0
  93. data/examples/breadcrumbs2/breadcrumbs.jstl.plogic +24 -0
  94. data/examples/breadcrumbs2/breadcrumbs.php.plogic +23 -0
  95. data/examples/breadcrumbs2/main.php +12 -0
  96. data/examples/breadcrumbs2/main.rb +12 -0
  97. data/examples/pagelayout/Makefile +47 -0
  98. data/examples/pagelayout/content.eruby.plogic +44 -0
  99. data/examples/pagelayout/content.jstl.plogic +36 -0
  100. data/examples/pagelayout/content.php.plogic +37 -0
  101. data/examples/pagelayout/content1.html +36 -0
  102. data/examples/pagelayout/content2.html +29 -0
  103. data/examples/pagelayout/design.css +40 -0
  104. data/examples/pagelayout/layout.html +50 -0
  105. data/examples/pagelayout/main.php +55 -0
  106. data/examples/pagelayout/main.rb +77 -0
  107. data/examples/pagelayout/menu.eruby.plogic +14 -0
  108. data/examples/pagelayout/menu.html +13 -0
  109. data/examples/pagelayout/menu.jstl.plogic +14 -0
  110. data/examples/pagelayout/menu.php.plogic +14 -0
  111. data/examples/rails1/Makefile +36 -0
  112. data/examples/rails1/README +19 -0
  113. data/examples/rails1/application_helper.rb +31 -0
  114. data/examples/rails1/edit.html +28 -0
  115. data/examples/rails1/edit.plogic +10 -0
  116. data/examples/rails1/form.html +52 -0
  117. data/examples/rails1/form.plogic +33 -0
  118. data/examples/rails1/layout.plogic +15 -0
  119. data/examples/rails1/link_to.plogic +19 -0
  120. data/examples/rails1/list.html +48 -0
  121. data/examples/rails1/list.plogic +28 -0
  122. data/examples/rails1/new.html +27 -0
  123. data/examples/rails1/new.plogic +10 -0
  124. data/examples/rails1/reader.plogic +29 -0
  125. data/examples/rails1/show.html +40 -0
  126. data/examples/rails1/show.plogic +4 -0
  127. data/examples/rails1/writer.plogic +8 -0
  128. data/examples/table1/Makefile +15 -0
  129. data/examples/table1/main.php +11 -0
  130. data/examples/table1/main.rb +11 -0
  131. data/examples/table1/table1.eruby.plogic +21 -0
  132. data/examples/table1/table1.html +16 -0
  133. data/examples/table1/table1.jstl.plogic +21 -0
  134. data/examples/table1/table1.php.plogic +22 -0
  135. data/kwartz.gemspec +55 -0
  136. data/lib/kwartz.rb +13 -0
  137. data/lib/kwartz/assert.rb +31 -0
  138. data/lib/kwartz/binding/eperl.rb +166 -0
  139. data/lib/kwartz/binding/erubis.rb +61 -0
  140. data/lib/kwartz/binding/eruby.rb +164 -0
  141. data/lib/kwartz/binding/jstl.rb +334 -0
  142. data/lib/kwartz/binding/php.rb +167 -0
  143. data/lib/kwartz/binding/rails.rb +295 -0
  144. data/lib/kwartz/binding/struts.rb +109 -0
  145. data/lib/kwartz/config.rb +28 -0
  146. data/lib/kwartz/converter.rb +920 -0
  147. data/lib/kwartz/error.rb +41 -0
  148. data/lib/kwartz/main.rb +464 -0
  149. data/lib/kwartz/node.rb +454 -0
  150. data/lib/kwartz/parser.rb +903 -0
  151. data/lib/kwartz/translator.rb +153 -0
  152. data/lib/kwartz/util/assert-text-equal.rb +44 -0
  153. data/lib/kwartz/util/testcase-helper.rb +112 -0
  154. data/setup.rb +1331 -0
  155. data/test/test-compile.rb +36 -0
  156. data/test/test-compile.yaml +178 -0
  157. data/test/test-converter.rb +34 -0
  158. data/test/test-converter.yaml +127 -0
  159. data/test/test-directives.rb +32 -0
  160. data/test/test-directives.yaml +1411 -0
  161. data/test/test-main.rb +464 -0
  162. data/test/test-parser.rb +54 -0
  163. data/test/test-parser.yaml +394 -0
  164. data/test/test-rails.rb +28 -0
  165. data/test/test-rails.yaml +301 -0
  166. data/test/test-ruleset.rb +36 -0
  167. data/test/test-ruleset.yaml +804 -0
  168. data/test/test.rb +44 -0
  169. metadata +236 -0
@@ -0,0 +1,301 @@
1
+ ---
2
+ ###
3
+ ### FormHelper:
4
+ ### - [v] check_box
5
+ ### - [v] file_field
6
+ ### - [v] hidden_field
7
+ ### - [v] password_field
8
+ ### - [v] radio_button
9
+ ### - [v] text_area
10
+ ### - [v] text_field
11
+ ###
12
+
13
+ ##
14
+ - name: check_box1
15
+ binding: rails
16
+ pdata: |
17
+ <input type="checkbox" id="user_chk1" title="check_box">
18
+ <input type="checkbox" name="user[chk2]" title="check_box">
19
+ expected: |
20
+ <%= check_box 'user', 'chk1' %>
21
+ <%= check_box 'user', 'chk2' %>
22
+
23
+ ##
24
+ - name: file_field1
25
+ binding: rails
26
+ pdata: |
27
+ <input type="file" id="user_attach" title="file_field">
28
+ <input type="file" name="user[attach]" title="file_field">
29
+ expected: |
30
+ <%= file_field 'user', 'attach' %>
31
+ <%= file_field 'user', 'attach' %>
32
+
33
+ ##
34
+ - name: hidden_field1
35
+ binding: rails
36
+ pdata: |
37
+ <input type="hidden" id="user_id" title="hidden_field">
38
+ <input type="hidden" name="user[id]" title="hidden_field">
39
+ expected: |
40
+ <%= hidden_field 'user', 'id' %>
41
+ <%= hidden_field 'user', 'id' %>
42
+
43
+ ##
44
+ - name: password_field1
45
+ binding: rails
46
+ pdata: |
47
+ <input type="password" size="10" maxsize="20" title="password_field 'user1', 'name1'">
48
+ <input type="password" size="10" maxsize="20" id="user2_name2" title="password_field">
49
+ <input type="password" size="10" maxsize="20" name="user3[name3]" title="password_field">
50
+ expected: |
51
+ <%= password_field 'user1', 'name1', :size=>10, :maxsize=>20 %>
52
+ <%= password_field 'user2', 'name2', :size=>10, :maxsize=>20 %>
53
+ <%= password_field 'user3', 'name3', :size=>10, :maxsize=>20 %>
54
+
55
+ ##
56
+ - name: radio_button1
57
+ binding: rails
58
+ pdata: |
59
+ <input type="radio" id="user_radio_button1" value="button1" title="radio_button">
60
+ <input type="radio" name="user[radio]" value="button2" title="radio_button">
61
+ expected: |
62
+ <%= radio_button 'user', 'radio', 'button1' %>
63
+ <%= radio_button 'user', 'radio', 'button2' %>
64
+
65
+ ##
66
+ - name: text_area1
67
+ binding: rails
68
+ pdata: |
69
+ <textarea cols="3" rows="10" title="text_area 'user1', 'desc1'">...</textarea>
70
+ <textarea cols="2" rows="20" id="user2_desc2" title="text_area">...</textarea>
71
+ <textarea cols="1" rows="30" name="user3[desc3]" title="text_area">...</textarea>
72
+ expected: |
73
+ <%= text_area 'user1', 'desc1', :cols=>3, :rows=>10 %>
74
+ <%= text_area 'user2', 'desc2', :cols=>2, :rows=>20 %>
75
+ <%= text_area 'user3', 'desc3', :cols=>1, :rows=>30 %>
76
+
77
+ ##
78
+ - name: text_field1
79
+ binding: rails
80
+ pdata: |
81
+ <input type="text" size="10" maxsize="20" title="text_field 'user1', 'name1'">
82
+ <input type="text" size="10" maxsize="20" id="user2_name2" title="text_field">
83
+ <input type="text" size="10" maxsize="20" name="user3[name3]" title="text_field">
84
+ expected: |
85
+ <%= text_field 'user1', 'name1', :size=>10, :maxsize=>20 %>
86
+ <%= text_field 'user2', 'name2', :size=>10, :maxsize=>20 %>
87
+ <%= text_field 'user3', 'name3', :size=>10, :maxsize=>20 %>
88
+
89
+ ---
90
+ ###
91
+ ### FormTagHelper:
92
+ ### - [_]check_box_tag
93
+ ### - [_]end_form_tag
94
+ ### - [_]file_field_tag
95
+ ### - [v]form_tag
96
+ ### - [_]hidden_field_tag
97
+ ### - [_]image_submit_tag
98
+ ### - [_]password_field_tag
99
+ ### - [_]radio_button_tag
100
+ ### - [_]select_tag
101
+ ### - [_]start_form_tag
102
+ ### - [_]submit_tag
103
+ ### - [_]text_area_tag
104
+ ### - [_]text_field_tag
105
+ ###
106
+
107
+ ##
108
+ - name: form_tag1
109
+ binding: rails
110
+ pdata: |
111
+ <form action="show" method="get" multipart="" title="form_tag">
112
+ </form>
113
+ <form title="form_tag ( {:action=>'show', :id=>2}, {:method=>'get', :multipart=>true} )">
114
+ </form>
115
+ expected: |
116
+ <%= form_tag 'action'=>'show' %>
117
+ </form>
118
+ <%= form_tag ( {:action=>'show', :id=>2}, {:method=>'get', :multipart=>true} ) %>
119
+ </form>
120
+
121
+ ##
122
+ - name: submit_tag1
123
+ binding: rails
124
+ pdata: |
125
+ <input type="submit" value="OK" title="submit_tag:">
126
+ <input type="submit" value="OK" title="submit_tag">
127
+ <input type="submit" title="submit_tag">
128
+ expected: |
129
+ <%= submit_tag 'OK' %>
130
+ <%= submit_tag 'OK' %>
131
+ <%= submit_tag %>
132
+
133
+ ---
134
+ ###
135
+ ### FormOptionsHelper
136
+ ### - [v] collection_select
137
+ ### - [_] country_options_for_select
138
+ ### - [v] country_select
139
+ ### - [_] option_groups_from_collection_for_select
140
+ ### - [_] options_for_select
141
+ ### - [_] options_from_collection_for_select
142
+ ### - [v] select
143
+ ### - [_] time_zone_options_for_select
144
+ ### - [v] time_zone_select
145
+ ###
146
+
147
+ ##
148
+ - name: select1
149
+ binding: rails
150
+ pdata: |
151
+ <select name="user[id]" title="select %[foo bar baz]">
152
+ <option value="1">aaa</option>
153
+ </select>
154
+ <select name="user[id]" title="collection_select @users">
155
+ <option value="1">aaa</option>
156
+ </select>
157
+ <select name="user[country]" title="country_select">
158
+ <option value="us">United States</option>
159
+ </select>
160
+ <select name="user[timezone]" title="time_zone_select">
161
+ <option value="1">timezone</option>
162
+ </select>
163
+ expected: |
164
+ <%= select 'user', 'id', %[foo bar baz] %>
165
+ <%= collection_select 'user', 'id', @users %>
166
+ <%= country_select 'user', 'country' %>
167
+ <%= time_zone_select 'user', 'timezone' %>
168
+
169
+ ---
170
+ ### UrlHelper
171
+ ###
172
+ ### - [ ] button_to
173
+ ### - [ ] current_page?
174
+ ### - [v] link_image_to
175
+ ### - [v] link_to
176
+ ### - [ ] link_to_if
177
+ ### - [v] link_to_image
178
+ ### - [ ] link_to_unless
179
+ ### - [v] link_to_unless_current
180
+ ### - [v] mail_to
181
+ ### - [ ] url_for
182
+ ###
183
+
184
+ ##
185
+ - name: link_to1
186
+ binding: rails
187
+ pdata: |
188
+ <a href="#" title="link_to :action=>'show', :id=>@user.id">Show user</a>
189
+ <a href="#" title="link_to text, :action=>'list'">All</a>
190
+ expected: |
191
+ <%= link_to 'Show user', :action=>'show', :id=>@user.id %>
192
+ <%= link_to text, :action=>'list' %>
193
+
194
+ ##
195
+ - name: link_image_to1
196
+ binding: rails
197
+ pdata: |
198
+ <img src="foo.jpg" title="link_image_to :action=>'new', :id=>10">
199
+ <img src="foo.jpg" title="link_to_image :action=>'new', :id=>10">
200
+ expected: |
201
+ <%= link_image_to 'foo.jpg', :action=>'new', :id=>10 %>
202
+ <%= link_to_image 'foo.jpg', :action=>'new', :id=>10 %>
203
+
204
+ ##
205
+ - name: mail_to1
206
+ binding: rails
207
+ pdata: |
208
+ <a href="mailto:admin@example.com" title="mail_to">contact</a>
209
+ expected: |
210
+ <%= mail_to 'admin@example.com', 'contact' %>
211
+
212
+ ---
213
+ ###
214
+ ### JavaScriptHelper
215
+ ### - [ ] define_javascript_functions
216
+ ### - [ ] draggable_element
217
+ ### - [ ] drop_receiving_element
218
+ ### - [ ] escape_javascript
219
+ ### - [ ] evaluate_remote_response
220
+ ### - [ ] form_remote_tag
221
+ ### - [ ] javascript_tag
222
+ ### - [ ] link_to_function
223
+ ### - [v] link_to_remote
224
+ ### - [ ] observe_field
225
+ ### - [ ] observe_form
226
+ ### - [ ] periodically_call_remote
227
+ ### - [ ] remote_function
228
+ ### - [ ] sortable_element
229
+ ### - [v] submit_to_remote
230
+ ### - [ ] update_element_function
231
+ ### - [ ] visual_effect
232
+ ###
233
+
234
+ ##
235
+ - name: link_remote_to1
236
+ binding: rails
237
+ pdata: |
238
+ <a href="#" title="link_to_remote :action=>'show', :id=>@user.id">Show user</a>
239
+ <a href="#" title="link_to_remote @text, :action=>'list'">All</a>
240
+ expected: |
241
+ <%= link_to_remote 'Show user', :action=>'show', :id=>@user.id %>
242
+ <%= link_to_remote @text, :action=>'list' %>
243
+
244
+ ##
245
+ - name: submit_to_remote1
246
+ binding: rails
247
+ pdata: |
248
+ <input type="submit" name="NAME" value="SUBMIT" title="submit_to_remote">
249
+ expected: |
250
+ <%= submit_to_remote 'NAME', 'SUBMIT' %>
251
+
252
+
253
+ ---
254
+ ###
255
+ ### AssetTagHelper
256
+ ### - [_] auto_discovery_link_tag
257
+ ### - [_] image_path
258
+ ### - [v] image_tag
259
+ ### - [_] javascript_include_tag
260
+ ### - [_] javascript_path
261
+ ### - [_] register_javascript_include_default
262
+ ### - [_] stylesheet_link_tag
263
+ ### - [_] stylesheet_path
264
+ ###
265
+
266
+ ##
267
+ - name: image_tag1
268
+ binding: rails
269
+ pdata: |
270
+ <img src="/image/foo.gif" alt="text" title="image_tag">
271
+ expected: |
272
+ <%= image_tag '/image/foo.gif', :alt=>'text' %>
273
+
274
+ ---
275
+ ### DateHelper
276
+ ### - [v] date_select
277
+ ### - [v] datetime_select
278
+ ### - [_] distance_of_time_in_words
279
+ ### - [_] distance_of_time_in_words_to_now
280
+ ### - [_] select_date
281
+ ### - [_] select_datetime
282
+ ### - [_] select_day
283
+ ### - [_] select_hour
284
+ ### - [_] select_minute
285
+ ### - [_] select_month
286
+ ### - [_] select_second
287
+ ### - [_] select_time
288
+ ### - [_] select_year
289
+ ### - [_] time_ago_in_words
290
+
291
+ ##
292
+ - name: date_select1
293
+ binding: rails
294
+ pdata: |
295
+ <select id="user_birth" title="date_select :start_year=>2000, :include_blank=>true">
296
+ </select>
297
+ <select id="user_time" title="datetime_select :start_year=>1900">
298
+ </select>
299
+ expected: |
300
+ <%= date_select 'user', 'birth', :start_year=>2000, :include_blank=>true %>
301
+ <%= datetime_select 'user', 'time', :start_year=>1900 %>
@@ -0,0 +1,36 @@
1
+ ###
2
+ ### $Rev: 117 $
3
+ ### $Release: 3.0.0 $
4
+ ### copyright(c) 2004-2006 kuwata-lab.com all rights reserved
5
+ ###
6
+
7
+
8
+ require "#{File.dirname(__FILE__)}/test.rb"
9
+
10
+
11
+ class RulesetTest < Test::Unit::TestCase
12
+
13
+
14
+ ## define test methods
15
+ filename = __FILE__.sub(/\.rb$/, '.yaml')
16
+ load_yaml_testdata_with_each_lang(filename, :langs=>%w[eruby php jstl eperl])
17
+
18
+
19
+ def _test
20
+ regexp = /(\{\{\*|\*\}\})/
21
+ @pdata.gsub!(regexp, '') if @pdata
22
+ @plogic.gsub!(regexp, '') if @plogic
23
+ @expected.gsub!(regexp, '') if @expected
24
+ #
25
+ parser = Kwartz::PresentationLogicParser.get_class('css').new
26
+ ruleset_list = parser.parse(@plogic)
27
+ handler = Kwartz::Handler.get_class(@lang).new(ruleset_list)
28
+ converter = Kwartz::TextConverter.new(handler)
29
+ stmt_list = converter.convert(@pdata)
30
+ translator = Kwartz::Translator.get_class(@lang).new
31
+ actual = translator.translate(stmt_list)
32
+ assert_text_equal(@expected, actual)
33
+ end
34
+
35
+
36
+ end
@@ -0,0 +1,804 @@
1
+ ---
2
+ - name: elem
3
+ title: elem, Elem, ELEM
4
+ desc: |
5
+ {{,elem:,}}, {{,Elem:,}}, and {{,ELEM:,}} properties replaces the element
6
+ with expression value.
7
+
8
+ {{,Elem:,}} always escape expression value while {{,ELEM:,}} never escape it.
9
+ {{,elem:,}} escapes when command-line option '-e' is specified or
10
+ configuration option 'PROPERTY_ESCAPE' is ture.
11
+
12
+ pdata: |
13
+ <p id="mark:name1">aaa</p>
14
+ <p id="mark:name2">bbb</p>
15
+ <p id="mark:name3">ccc</p>
16
+
17
+ plogic*:
18
+ eruby: |
19
+ #name1 {
20
+ {{*elem:*}} user[:name];
21
+ }
22
+ #name2 {
23
+ {{*Elem:*}} user[:name];
24
+ }
25
+ #name3 {
26
+ {{*ELEM:*}} user[:name];
27
+ }
28
+ php: |
29
+ #name1 {
30
+ {{*elem:*}} $user['name'];
31
+ }
32
+ #name2 {
33
+ {{*Elem:*}} $user['name'];
34
+ }
35
+ #name3 {
36
+ {{*ELEM:*}} $user['name'];
37
+ }
38
+ eperl: |
39
+ #name1 {
40
+ {{*elem:*}} $user{'name'};
41
+ }
42
+ #name2 {
43
+ {{*Elem:*}} $user{'name'};
44
+ }
45
+ #name3 {
46
+ {{*ELEM:*}} $user{'name'};
47
+ }
48
+ jstl: |
49
+ #name1 {
50
+ {{*elem:*}} user.name;
51
+ }
52
+ #name2 {
53
+ {{*Elem:*}} user.name;
54
+ }
55
+ #name3 {
56
+ {{*ELEM:*}} user.name;
57
+ }
58
+
59
+ expected*:
60
+ eruby: |
61
+ {{*<%= user[:name] %>*}}
62
+ {{*<%=h user[:name] %>*}}
63
+ {{*<%= user[:name] %>*}}
64
+ php: |
65
+ {{*<?php echo $user['name']; ?>*}}
66
+ {{*<?php echo htmlspecialchars($user['name']); ?>*}}
67
+ {{*<?php echo $user['name']; ?>*}}
68
+ eperl: |
69
+ {{*<?= $user{'name'} !>*}}
70
+ {{*<?= encode_entities($user{'name'}) !>*}}
71
+ {{*<?= $user{'name'} !>*}}
72
+ jstl: |
73
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
74
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
75
+ {{*${user.name}*}}
76
+ {{*${user.name}*}}
77
+ {{*<c:out value="${user.name}" escapeXml="false"/>*}}
78
+
79
+ ##
80
+ - name: cont
81
+ title: cont, Cont, CONT
82
+ desc: |
83
+ {{,cont:,}}, {{,Cont:,}}, and {{,CONT:,}} properties replaces the element
84
+ with expression value.
85
+
86
+ {{,Cont:,}} always escape expression value while {{,CONT:,}} never escape it.
87
+ {{,cont:,}} escapes when command-line option '-e' is specified or
88
+ configuration option 'PROPERTY_ESCAPE' is ture.
89
+
90
+ pdata: |
91
+ <p id="mark:name1">aaa</p>
92
+ <p id="mark:name2">bbb</p>
93
+ <p id="mark:name3">ccc</p>
94
+
95
+ plogic*:
96
+ eruby: |
97
+ #name1 {
98
+ {{*cont:*}} user[:name];
99
+ }
100
+ #name2 {
101
+ {{*Cont:*}} user[:name];
102
+ }
103
+ #name3 {
104
+ {{*CONT:*}} user[:name];
105
+ }
106
+ php: |
107
+ #name1 {
108
+ {{*cont:*}} $user['name'];
109
+ }
110
+ #name2 {
111
+ {{*Cont:*}} $user['name'];
112
+ }
113
+ #name3 {
114
+ {{*CONT:*}} $user['name'];
115
+ }
116
+ eperl: |
117
+ #name1 {
118
+ {{*cont:*}} $user{'name'};
119
+ }
120
+ #name2 {
121
+ {{*Cont:*}} $user{'name'};
122
+ }
123
+ #name3 {
124
+ {{*CONT:*}} $user{'name'};
125
+ }
126
+ jstl: |
127
+ #name1 {
128
+ {{*cont:*}} user.name;
129
+ }
130
+ #name2 {
131
+ {{*Cont:*}} user.name;
132
+ }
133
+ #name3 {
134
+ {{*CONT:*}} user.name;
135
+ }
136
+
137
+ expected*:
138
+ eruby: |
139
+ <p>{{*<%= user[:name] %>*}}</p>
140
+ <p>{{*<%=h user[:name] %>*}}</p>
141
+ <p>{{*<%= user[:name] %>*}}</p>
142
+ php: |
143
+ <p>{{*<?php echo $user['name']; ?>*}}</p>
144
+ <p>{{*<?php echo htmlspecialchars($user['name']); ?>*}}</p>
145
+ <p>{{*<?php echo $user['name']; ?>*}}</p>
146
+ eperl: |
147
+ <p>{{*<?= $user{'name'} !>*}}</p>
148
+ <p>{{*<?= encode_entities($user{'name'}) !>*}}</p>
149
+ <p>{{*<?= $user{'name'} !>*}}</p>
150
+ jstl: |
151
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
152
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
153
+ <p>{{*${user.name}*}}</p>
154
+ <p>{{*${user.name}*}}</p>
155
+ <p>{{*<c:out value="${user.name}" escapeXml="false"/>*}}</p>
156
+
157
+ ##
158
+ - name: value
159
+ title: value, Value, VALUE
160
+ desc: |
161
+ {{,value:,}}, {{,Value:,}}, and {{,VALUE:,}} properties replaces the element
162
+ with expression value.
163
+ These are the same as {{,cont:,}}, {{,Cont:,}}, and {{,CONT:,}} properties
164
+ respectively.
165
+
166
+ pdata: |
167
+ <p id="mark:name1">aaa</p>
168
+ <p id="mark:name2">bbb</p>
169
+ <p id="mark:name3">ccc</p>
170
+
171
+ plogic*:
172
+ eruby: |
173
+ #name1 {
174
+ {{*value:*}} user[:name];
175
+ }
176
+ #name2 {
177
+ {{*Value:*}} user[:name];
178
+ }
179
+ #name3 {
180
+ {{*VALUE:*}} user[:name];
181
+ }
182
+ php: |
183
+ #name1 {
184
+ {{*value:*}} $user['name'];
185
+ }
186
+ #name2 {
187
+ {{*Value:*}} $user['name'];
188
+ }
189
+ #name3 {
190
+ {{*VALUE:*}} $user['name'];
191
+ }
192
+ eperl: |
193
+ #name1 {
194
+ {{*value:*}} $user{'name'};
195
+ }
196
+ #name2 {
197
+ {{*Value:*}} $user{'name'};
198
+ }
199
+ #name3 {
200
+ {{*VALUE:*}} $user{'name'};
201
+ }
202
+ jstl: |
203
+ #name1 {
204
+ {{*value:*}} user.name;
205
+ }
206
+ #name2 {
207
+ {{*Value:*}} user.name;
208
+ }
209
+ #name3 {
210
+ {{*VALUE:*}} user.name;
211
+ }
212
+
213
+ expected*:
214
+ eruby: |
215
+ <p>{{*<%= user[:name] %>*}}</p>
216
+ <p>{{*<%=h user[:name] %>*}}</p>
217
+ <p>{{*<%= user[:name] %>*}}</p>
218
+ php: |
219
+ <p>{{*<?php echo $user['name']; ?>*}}</p>
220
+ <p>{{*<?php echo htmlspecialchars($user['name']); ?>*}}</p>
221
+ <p>{{*<?php echo $user['name']; ?>*}}</p>
222
+ eperl: |
223
+ <p>{{*<?= $user{'name'} !>*}}</p>
224
+ <p>{{*<?= encode_entities($user{'name'}) !>*}}</p>
225
+ <p>{{*<?= $user{'name'} !>*}}</p>
226
+ jstl: |
227
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
228
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
229
+ <p>{{*${user.name}*}}</p>
230
+ <p>{{*${user.name}*}}</p>
231
+ <p>{{*<c:out value="${user.name}" escapeXml="false"/>*}}</p>
232
+
233
+ ##
234
+ - name: stag
235
+ title: stag, Stag, STAG
236
+ desc: |
237
+ {{,stage:,}}, {{,Stag:,}}, and {{,STAG:,}} properties replaces the start-tag
238
+ with expression value.
239
+
240
+ {{,Stag:,}} always escape expression value while {{,STAG:,}} never escape it.
241
+ {{,stag:,}} escapes when command-line option '-e' is specified or
242
+ configuration option 'PROPERTY_ESCAPE' is ture.
243
+
244
+ pdata: |
245
+ <a href="#" id="mark:link1"><img src="button1.png"></a>
246
+ <a href="#" id="mark:link2"><img src="button2.png"></a>
247
+ <a href="#" id="mark:link3"><img src="button3.png"></a>
248
+
249
+ plogic*:
250
+ eruby: |
251
+ #link1 {
252
+ {{*stag:*}} start_link_to :action=>'list';
253
+ }
254
+ #link2 {
255
+ {{*Stag:*}} start_link_to :action=>'list';
256
+ }
257
+ #link3 {
258
+ {{*STAG:*}} start_link_to :action=>'list';
259
+ }
260
+ php: |
261
+ #link1 {
262
+ {{*stag:*}} start_link_to('list');
263
+ }
264
+ #link2 {
265
+ {{*Stag:*}} start_link_to('list');
266
+ }
267
+ #link3 {
268
+ {{*STAG:*}} start_link_to('list');
269
+ }
270
+ eperl: |
271
+ #link1 {
272
+ {{*stag:*}} start_link_to('list');
273
+ }
274
+ #link2 {
275
+ {{*Stag:*}} start_link_to('list');
276
+ }
277
+ #link3 {
278
+ {{*STAG:*}} start_link_to('list');
279
+ }
280
+ jstl: |
281
+ #link1 {
282
+ {{*stag:*}} fn:start_link_to('list');
283
+ }
284
+ #link2 {
285
+ {{*Stag:*}} fn:start_link_to('list');
286
+ }
287
+ #link3 {
288
+ {{*STAG:*}} fn:start_link_to('list');
289
+ }
290
+
291
+ expected*:
292
+ eruby: |
293
+ {{*<%= start_link_to :action=>'list' %>*}}<img src="button1.png"></a>
294
+ {{*<%=h start_link_to :action=>'list' %>*}}<img src="button2.png"></a>
295
+ {{*<%= start_link_to :action=>'list' %>*}}<img src="button3.png"></a>
296
+ php: |
297
+ {{*<?php echo start_link_to('list'); ?>*}}<img src="button1.png"></a>
298
+ {{*<?php echo htmlspecialchars(start_link_to('list')); ?>*}}<img src="button2.png"></a>
299
+ {{*<?php echo start_link_to('list'); ?>*}}<img src="button3.png"></a>
300
+ eperl: |
301
+ {{*<?= start_link_to('list') !>*}}<img src="button1.png"></a>
302
+ {{*<?= encode_entities(start_link_to('list')) !>*}}<img src="button2.png"></a>
303
+ {{*<?= start_link_to('list') !>*}}<img src="button3.png"></a>
304
+ jstl: |
305
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
306
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
307
+ {{*${fn:start_link_to('list')}*}}<img src="button1.png"></a>
308
+ {{*${fn:start_link_to('list')}*}}<img src="button2.png"></a>
309
+ {{*<c:out value="${fn:start_link_to('list')}" escapeXml="false"/>*}}<img src="button3.png"></a>
310
+
311
+ ##
312
+ - name: etag
313
+ title: etag, Etag, ETAG
314
+ desc: |
315
+ {{,stage:,}}, {{,Etag:,}}, and {{,ETAG:,}} properties replaces the end-tag
316
+ with expression value.
317
+
318
+ {{,Etag:,}} always escape expression value while {{,ETAG:,}} never escape it.
319
+ {{,etag:,}} escapes when command-line option '-e' is specified or
320
+ configuration option 'PROPERTY_ESCAPE' is ture.
321
+
322
+ pdata: |
323
+ <li id="mark:item1">foo</li>
324
+ <li id="mark:item2">bar</li>
325
+ <li id="mark:item3">baz</li>
326
+
327
+ plogic*:
328
+ eruby: |
329
+ #item1 {
330
+ {{*etag:*}} is_xml ? '</li>' : '';
331
+ }
332
+ #item2 {
333
+ {{*Etag:*}} is_xml ? '</li>' : '';
334
+ }
335
+ #item3 {
336
+ {{*ETAG:*}} is_xml ? '</li>' : '';
337
+ }
338
+ php: |
339
+ #item1 {
340
+ {{*etag:*}} $is_xml ? '</li>' : '';
341
+ }
342
+ #item2 {
343
+ {{*Etag:*}} $is_xml ? '</li>' : '';
344
+ }
345
+ #item3 {
346
+ {{*ETAG:*}} $is_xml ? '</li>' : '';
347
+ }
348
+ eperl: |
349
+ #item1 {
350
+ {{*etag:*}} $is_xml ? '</li>' : '';
351
+ }
352
+ #item2 {
353
+ {{*Etag:*}} $is_xml ? '</li>' : '';
354
+ }
355
+ #item3 {
356
+ {{*ETAG:*}} $is_xml ? '</li>' : '';
357
+ }
358
+ jstl: |
359
+ #item1 {
360
+ {{*etag:*}} is_xml ? '</li>' : '';
361
+ }
362
+ #item2 {
363
+ {{*Etag:*}} is_xml ? '</li>' : '';
364
+ }
365
+ #item3 {
366
+ {{*ETAG:*}} is_xml ? '</li>' : '';
367
+ }
368
+
369
+ expected*:
370
+ eruby: |
371
+ <li>foo{{*<%= is_xml ? '</li>' : '' %>*}}
372
+ <li>bar{{*<%=h is_xml ? '</li>' : '' %>*}}
373
+ <li>baz{{*<%= is_xml ? '</li>' : '' %>*}}
374
+ php: |
375
+ <li>foo{{*<?php echo $is_xml ? '</li>' : ''; ?>*}}
376
+ <li>bar{{*<?php echo htmlspecialchars($is_xml ? '</li>' : ''); ?>*}}
377
+ <li>baz{{*<?php echo $is_xml ? '</li>' : ''; ?>*}}
378
+ eperl: |
379
+ <li>foo{{*<?= $is_xml ? '</li>' : '' !>*}}
380
+ <li>bar{{*<?= encode_entities($is_xml ? '</li>' : '') !>*}}
381
+ <li>baz{{*<?= $is_xml ? '</li>' : '' !>*}}
382
+ jstl: |
383
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
384
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
385
+ <li>foo{{*${is_xml ? '</li>' : ''}*}}
386
+ <li>bar{{*${is_xml ? '</li>' : ''}*}}
387
+ <li>baz{{*<c:out value="${is_xml ? '</li>' : ''}" escapeXml="false"/>*}}
388
+
389
+ ##
390
+ - name: attrs
391
+ title: attrs, Attrs, ATTRS
392
+ desc: |
393
+ {{,attrs:,}}, {{,Attrs:,}}, {{,ATTRS:,}}, property replaces or adds attributes.
394
+
395
+ {{,Attrs:,}} always escape expression value while {{,ATTRS:,}} never escape it.
396
+ {{,attrs:,}} escapes when command-line option '-e' is specified or
397
+ configuration option 'PROPERTY_ESCAPE' is ture.
398
+
399
+ pdata: |
400
+ <p id="mark:item" class="para">
401
+ AAA
402
+ </p>
403
+
404
+ plogic*:
405
+ eruby: |
406
+ #item {
407
+ {{*attrs:*}} 'class' klass,
408
+ 'style' style;
409
+ }
410
+ php: |
411
+ #item {
412
+ {{*attrs:*}} 'class' $class,
413
+ 'style' $style;
414
+ }
415
+ jstl: |
416
+ #item {
417
+ {{*attrs:*}} 'class' klass,
418
+ 'style' style;
419
+ }
420
+ eperl: |
421
+ #item {
422
+ {{*attrs:*}} 'class' $class,
423
+ 'style' $style;
424
+ }
425
+
426
+ expected*:
427
+ eruby: |
428
+ <p {{*class="<%= klass %>"*}} {{*style="<%= style %>"*}}>
429
+ AAA
430
+ </p>
431
+ php: |
432
+ <p {{*class="<?php echo $class; ?>"*}} {{*style="<?php echo $style; ?>"*}}>
433
+ AAA
434
+ </p>
435
+ jstl: |
436
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
437
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
438
+ <p {{*class="${klass}"*}} {{*style="${style}"*}}>
439
+ AAA
440
+ </p>
441
+ eperl: |
442
+ <p {{*class="<?= $class !>"*}} {{*style="<?= $style !>"*}}>
443
+ AAA
444
+ </p>
445
+
446
+ postscript: |
447
+ Notice that the follwing will be parse error
448
+ because Kwartz parses {{,attrs:,}} property with pattern matching.
449
+
450
+ .--------------------
451
+ #foo {
452
+ attrs: 'class' klass, 'style' style;
453
+ }
454
+ .--------------------
455
+
456
+ ##
457
+ - name: append
458
+ title: append, Append, APPEND
459
+ desc: |
460
+ {{,append:,}}, {{,Append:,}}, {{,APPEND:,}} directive appends
461
+ expressions to the start tag.
462
+
463
+ {{,Append:,}} always escape expression value while {{,APPEND:,}} never escape it.
464
+ {{,append:,}} escapes when command-line option '-e' is specified or
465
+ configuration option 'PROPERTY_ESCAPE' is ture.
466
+
467
+ pdata: |
468
+ <input type="checkboxk" id="mark:remember" value="y">Remeber me
469
+
470
+ plogic*:
471
+ eruby: |
472
+ #remember {
473
+ {{*append:*}} flag ? ' checked' : '';
474
+ }
475
+ php: |
476
+ #remember {
477
+ {{*append:*}} $flag ? ' checked' : '';
478
+ }
479
+ jstl: |
480
+ #remember {
481
+ {{*append:*}} flag ? ' checked' : '';
482
+ }
483
+ eperl: |
484
+ #remember {
485
+ {{*append:*}} $flag ? ' checked' : '';
486
+ }
487
+
488
+ expected*:
489
+ eruby: |
490
+ <input type="checkboxk" value="y"{{*<%= flag ? ' checked' : '' %>*}}>Remeber me
491
+ php: |
492
+ <input type="checkboxk" value="y"{{*<?php echo $flag ? ' checked' : ''; ?>*}}>Remeber me
493
+ jstl: |
494
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
495
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
496
+ <input type="checkboxk" value="y"{{*${flag ? ' checked' : ''}*}}>Remeber me
497
+ eperl: |
498
+ <input type="checkboxk" value="y"{{*<?= $flag ? ' checked' : '' !>*}}>Remeber me
499
+
500
+
501
+ postscript: |
502
+ The following is an example to append several expressions.
503
+
504
+ .--------------------
505
+ #remember {
506
+ append: expr1,
507
+ expr2,
508
+ expr3;
509
+ }
510
+ .--------------------
511
+
512
+ Notice that the following will be parse error.
513
+
514
+ .--------------------
515
+ #remember {
516
+ append: expr1, expr2, expr3;
517
+ }
518
+ .--------------------
519
+
520
+ ##
521
+ - name: remove
522
+ title: remove
523
+ common: yes
524
+ desc: |
525
+ {{,remove:,}} property removes attributes.
526
+
527
+ pdata: |
528
+ <p id="foo" class="paragraph" style="color: red">
529
+ AAA
530
+ </p>
531
+
532
+ plogic*:
533
+ eruby: &remove_pdata |
534
+ #foo {
535
+ {{*remove:*}} 'id', 'style';
536
+ }
537
+ php: *remove_pdata
538
+ jstl: *remove_pdata
539
+ eperl: *remove_pdata
540
+
541
+ expected*:
542
+ eruby: &remove_expected |
543
+ <p class="paragraph">
544
+ AAA
545
+ </p>
546
+ php: *remove_expected
547
+ jstl: |
548
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
549
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
550
+ <p class="paragraph">
551
+ AAA
552
+ </p>
553
+ eperl: *remove_expected
554
+
555
+
556
+ ##
557
+ - name: logic
558
+ title: logic
559
+ desc: |
560
+ {{,logic:,}} property represents the presentation logic body of the element.
561
+ In the {{,logic:,}} property, the folllowings are available.
562
+ .[ {{,_elem,}} ]
563
+ represents the element
564
+ .[ {{,_stag,}} ]
565
+ represents start-tag of the element
566
+ .[ {{,_cont,}} ]
567
+ represents content of the element
568
+ .[ {{,_stag,}} ]
569
+ represents end-tag of the element
570
+ .[ {{,_element({{/name/}}),}} ]
571
+ represents the other element marked as {{/name/}}.
572
+ .[ {{,_content({{/name/}}),}} ]
573
+ represents the content of other element marked as {{/name/}}.
574
+
575
+ In the {{,logic:,}} property, it is able to write statements in target language
576
+ (Ruby, PHP, Java, Perl, and so on).
577
+
578
+ pdata: |
579
+ <ul>
580
+ <li id="mark:items">AAA</li>
581
+ </ul>
582
+
583
+ plogic*:
584
+ eruby: |
585
+ #items {
586
+ value: item;
587
+ {{*logic:*}} {
588
+ @list.each do |item|
589
+ {{*_stag*}}
590
+ {{*_cont*}}
591
+ {{*_etag*}}
592
+ end
593
+ }
594
+ }
595
+ php: |
596
+ #items {
597
+ value: $item;
598
+ {{*logic:*}} {
599
+ foreach ($list as $item) {
600
+ {{*_stag();*}}
601
+ {{*_cont();*}}
602
+ {{*_etag();*}}
603
+ }
604
+ }
605
+ }
606
+ jstl: |
607
+ #items {
608
+ value: item;
609
+ {{*logic:*}} {
610
+ <c:forEach var="item" items="${list}">
611
+ {{*_stag();*}}
612
+ {{*_cont();*}}
613
+ {{*_etag();*}}
614
+ </c:forEach>
615
+ }
616
+ }
617
+ eperl: |
618
+ #items {
619
+ value: $item;
620
+ {{*logic:*}} {
621
+ foreach ($item in @list) {
622
+ {{*_stag();*}}
623
+ {{*_cont();*}}
624
+ {{*_etag();*}}
625
+ }
626
+ }
627
+ }
628
+
629
+ expected*:
630
+ eruby: |
631
+ <ul>
632
+ {{*<% @list.each do |item| %>*}}
633
+ <li><%= item %></li>
634
+ {{*<% end %>*}}
635
+ </ul>
636
+ php: |
637
+ <ul>
638
+ {{*<?php foreach ($list as $item) { ?>*}}
639
+ <li><?php echo $item; ?></li>
640
+ {{*<?php } ?>*}}
641
+ </ul>
642
+ jstl: |
643
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
644
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
645
+ <ul>
646
+ {{*<c:forEach var="item" items="${list}">*}}
647
+ <li>${item}</li>
648
+ {{*</c:forEach>*}}
649
+ </ul>
650
+ eperl: |
651
+ <ul>
652
+ {{*<? foreach ($item in @list) { !>*}}
653
+ <li><?= $item !></li>
654
+ {{*<? } !>*}}
655
+ </ul>
656
+
657
+ ##
658
+ - name: begin
659
+ title: begin, end
660
+ desc: |
661
+ {{,begin:,}} and {{,end:,}} property represents the prework and postwork
662
+ of document respectively.
663
+ These properties takes target code block and are available only with
664
+ '#DOCUMENT' selector.
665
+
666
+ pdata: |
667
+ <p>Hello <span id="mark:username">world</span>!</p>
668
+ <ul>
669
+ <li id="mark:menu">menu item</li>
670
+ </ul>
671
+
672
+ plogic*:
673
+ eruby: |
674
+ #DOCUMENT {
675
+ {{*begin:*}} {
676
+ username = @context[:username]
677
+ menulist = @context[:menulist]
678
+ }
679
+ {{*end:*}} {
680
+ print "<!-- document end -->\n"
681
+
682
+ }
683
+ }
684
+ #username {
685
+ value: username;
686
+ }
687
+ #menu {
688
+ value: menu;
689
+ logic: {
690
+ for menu in menulist
691
+ _elem
692
+ end
693
+ }
694
+ }
695
+ php: |
696
+ #DOCUMENT {
697
+ {{*begin:*}} {
698
+ $username = $context['username'];
699
+ $menulist = $context['menulist'];
700
+ }
701
+ {{*end:*}} {
702
+ print("<!-- document end -->\n");
703
+
704
+ }
705
+ }
706
+ #username {
707
+ value: $username;
708
+ }
709
+ #menu {
710
+ value: $menu;
711
+ logic: {
712
+ foreach ($menulist as $menu) {
713
+ _elem();
714
+ }
715
+ }
716
+ }
717
+ jstl: |
718
+ #DOCUMENT {
719
+ {{*begin:*}} {
720
+ <c:set var="username" value="${context.username}"/>
721
+ <c:set var="menulist" value="${context.menulist}"/>
722
+ }
723
+ {{*end:*}} {
724
+ <c:out value="<!-- document end -->\n"/>
725
+ }
726
+ }
727
+ #username {
728
+ value: username;
729
+ }
730
+ #menu {
731
+ value: menu;
732
+ logic: {
733
+ <c:forEach var="menu" items="${menulist}">
734
+ _elem();
735
+ </c:forEach>
736
+ }
737
+ }
738
+ eperl: |
739
+ #DOCUMENT {
740
+ {{*begin:*}} {
741
+ $username = $context{'username'};
742
+ @menulist = $context{'menulist'};
743
+ }
744
+ {{*end:*}} {
745
+ print("<!-- document end -->\n");
746
+
747
+ }
748
+ }
749
+ #username {
750
+ value: $username;
751
+ }
752
+ #menu {
753
+ value: $menu;
754
+ logic: {
755
+ foreach ($menu in @menulist) {
756
+ _elem();
757
+ }
758
+ }
759
+ }
760
+
761
+ expected*:
762
+ eruby: |-
763
+ {{*<% username = @context[:username] %>*}}
764
+ {{*<% menulist = @context[:menulist] %>*}}
765
+ <p>Hello <span><%= username %></span>!</p>
766
+ <ul>
767
+ <% for menu in menulist %>
768
+ <li><%= menu %></li>
769
+ <% end %>
770
+ </ul>
771
+ {{*<%= "<!-- document end -->\n" %>*}}
772
+
773
+ php: |-
774
+ {{*<?php $username = $context['username']; ?>*}}
775
+ {{*<?php $menulist = $context['menulist']; ?>*}}
776
+ <p>Hello <span><?php echo $username; ?></span>!</p>
777
+ <ul>
778
+ <?php foreach ($menulist as $menu) { ?>
779
+ <li><?php echo $menu; ?></li>
780
+ <?php } ?>
781
+ </ul>
782
+ {{*<?php echo "<!-- document end -->\n"; ?>*}}
783
+ jstl: |
784
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
785
+ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
786
+ {{*<c:set var="username" value="${context.username}"/>*}}
787
+ {{*<c:set var="menulist" value="${context.menulist}"/>*}}
788
+ <p>Hello <span>${username}</span>!</p>
789
+ <ul>
790
+ <c:forEach var="menu" items="${menulist}">
791
+ <li>${menu}</li>
792
+ </c:forEach>
793
+ </ul>
794
+ {{*<c:out value="<!-- document end -->\n"/>*}}
795
+ eperl: |-
796
+ {{*<? $username = $context{'username'}; !>*}}
797
+ {{*<? @menulist = $context{'menulist'}; !>*}}
798
+ <p>Hello <span><?= $username !></span>!</p>
799
+ <ul>
800
+ <? foreach ($menu in @menulist) { !>
801
+ <li><?= $menu !></li>
802
+ <? } !>
803
+ </ul>
804
+ {{*<?= "<!-- document end -->\n" !>*}}