kwartz 3.0.0 → 3.1.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 (179) hide show
  1. data/ChangeLog +36 -1
  2. data/LGPL +504 -0
  3. data/README.txt +16 -2
  4. data/bin/kwartz +1 -1
  5. data/doc-api/classes/Kwartz.html +47 -1
  6. data/doc-api/classes/Kwartz/Assertion.html +6 -6
  7. data/doc-api/classes/Kwartz/AssertionError.html +6 -6
  8. data/doc-api/classes/Kwartz/AttrInfo.html +42 -42
  9. data/doc-api/classes/Kwartz/BaseError.html +12 -12
  10. data/doc-api/classes/Kwartz/BaseTranslator.html +210 -43
  11. data/doc-api/classes/Kwartz/CharacterType.html +24 -24
  12. data/doc-api/classes/Kwartz/CommandOptionError.html +7 -7
  13. data/doc-api/classes/Kwartz/CommandOptions.html +49 -49
  14. data/doc-api/classes/Kwartz/Config.html +6 -1
  15. data/doc-api/classes/Kwartz/ConvertError.html +14 -14
  16. data/doc-api/classes/Kwartz/Converter.html +31 -30
  17. data/doc-api/classes/Kwartz/CssStyleParser.html +79 -57
  18. data/doc-api/classes/Kwartz/Defun.html +313 -0
  19. data/doc-api/classes/Kwartz/DocumentRuleset.html +58 -58
  20. data/doc-api/classes/Kwartz/ElementExpander.html +32 -32
  21. data/doc-api/classes/Kwartz/ElementInfo.html +29 -29
  22. data/doc-api/classes/Kwartz/ElementRuleset.html +126 -96
  23. data/doc-api/classes/Kwartz/EperlHandler.html +108 -84
  24. data/doc-api/classes/Kwartz/EperlTranslator.html +7 -7
  25. data/doc-api/classes/Kwartz/ErubisHandler.html +2 -2
  26. data/doc-api/classes/Kwartz/ErubisTranslator.html +8 -8
  27. data/doc-api/classes/Kwartz/ErubyHandler.html +2 -220
  28. data/doc-api/classes/Kwartz/ErubyTranslator.html +7 -7
  29. data/doc-api/classes/Kwartz/ExpandStatement.html +20 -20
  30. data/doc-api/classes/Kwartz/Handler.html +122 -117
  31. data/doc-api/classes/Kwartz/HandlerArgument.html +215 -0
  32. data/doc-api/classes/Kwartz/Helper.html +112 -0
  33. data/doc-api/classes/Kwartz/Helper/ActionViewHelper.html +221 -0
  34. data/doc-api/classes/Kwartz/Helper/RailsTemplate.html +630 -0
  35. data/doc-api/classes/Kwartz/JstlHandler.html +208 -193
  36. data/doc-api/classes/Kwartz/JstlTranslator.html +15 -15
  37. data/doc-api/classes/Kwartz/KwartzError.html +6 -6
  38. data/doc-api/classes/Kwartz/Main.html +39 -23
  39. data/doc-api/classes/Kwartz/NativeExpression.html +18 -18
  40. data/doc-api/classes/Kwartz/NativeStatement.html +25 -25
  41. data/doc-api/classes/Kwartz/Node.html +6 -6
  42. data/doc-api/classes/Kwartz/PIErubisHandler.html +113 -0
  43. data/doc-api/classes/Kwartz/PIErubisTranslator.html +200 -0
  44. data/doc-api/classes/Kwartz/ParseError.html +6 -6
  45. data/doc-api/classes/Kwartz/PhpHandler.html +102 -83
  46. data/doc-api/classes/Kwartz/PhpTranslator.html +14 -14
  47. data/doc-api/classes/Kwartz/PresentationLogicParser.html +136 -128
  48. data/doc-api/classes/Kwartz/PrintStatement.html +19 -19
  49. data/doc-api/classes/Kwartz/RailsHandler.html +121 -118
  50. data/doc-api/classes/Kwartz/RailsTranslator.html +7 -7
  51. data/doc-api/classes/Kwartz/RubyHandler.html +349 -0
  52. data/doc-api/classes/Kwartz/RubyStyleParser.html +85 -85
  53. data/doc-api/classes/Kwartz/RubyTranslator.html +218 -0
  54. data/doc-api/classes/Kwartz/StatementHelper.html +479 -0
  55. data/doc-api/classes/Kwartz/StrutsTranslator.html +12 -12
  56. data/doc-api/classes/Kwartz/TagInfo.html +28 -28
  57. data/doc-api/classes/Kwartz/TextConverter.html +28 -28
  58. data/doc-api/classes/Kwartz/Translator.html +42 -42
  59. data/doc-api/classes/Kwartz/Util.html +284 -0
  60. data/doc-api/created.rid +1 -1
  61. data/doc-api/files/__/README_txt.html +30 -3
  62. data/doc-api/files/kwartz/assert_rb.html +1 -1
  63. data/doc-api/files/kwartz/binding/eperl_rb.html +2 -2
  64. data/doc-api/files/kwartz/binding/erubis_rb.html +3 -3
  65. data/doc-api/files/kwartz/binding/eruby_rb.html +3 -2
  66. data/doc-api/files/kwartz/binding/jstl_rb.html +2 -2
  67. data/doc-api/files/kwartz/binding/php_rb.html +2 -2
  68. data/doc-api/files/kwartz/binding/pierubis_rb.html +116 -0
  69. data/doc-api/files/kwartz/binding/rails_rb.html +2 -2
  70. data/doc-api/files/kwartz/binding/ruby_rb.html +115 -0
  71. data/doc-api/files/kwartz/binding/struts_rb.html +1 -1
  72. data/doc-api/files/kwartz/config_rb.html +2 -2
  73. data/doc-api/files/kwartz/converter_rb.html +3 -2
  74. data/doc-api/files/kwartz/defun_rb.html +116 -0
  75. data/doc-api/files/kwartz/error_rb.html +1 -1
  76. data/doc-api/files/kwartz/helper/rails_rb.html +123 -0
  77. data/doc-api/files/kwartz/main_rb.html +5 -2
  78. data/doc-api/files/kwartz/node_rb.html +2 -2
  79. data/doc-api/files/kwartz/parser_rb.html +2 -2
  80. data/doc-api/files/kwartz/translator_rb.html +2 -2
  81. data/doc-api/files/kwartz/util/assert-text-equal_rb.html +1 -1
  82. data/doc-api/files/kwartz/util/testcase-helper_rb.html +2 -2
  83. data/doc-api/files/kwartz/util_rb.html +107 -0
  84. data/doc-api/files/kwartz_rb.html +3 -2
  85. data/doc-api/fr_class_index.html +11 -0
  86. data/doc-api/fr_file_index.html +5 -0
  87. data/doc-api/fr_method_index.html +242 -190
  88. data/doc/p-pattern.html +94 -94
  89. data/doc/reference.html +847 -612
  90. data/doc/users-guide.html +744 -241
  91. data/examples/rails1/README +2 -2
  92. data/examples/rails1/application_helper.rb +2 -27
  93. data/examples/rails1/link_to.plogic +5 -5
  94. data/examples/rails1/list.plogic +2 -2
  95. data/examples/rails2/app/controllers/application.rb +14 -0
  96. data/examples/rails2/app/controllers/groups_controller.rb +47 -0
  97. data/examples/rails2/app/controllers/members_controller.rb +56 -0
  98. data/examples/rails2/app/helpers/application_helper.rb +6 -0
  99. data/examples/rails2/app/helpers/groups_helper.rb +2 -0
  100. data/examples/rails2/app/helpers/members_helper.rb +2 -0
  101. data/examples/rails2/app/models/group.rb +2 -0
  102. data/examples/rails2/app/models/member.rb +3 -0
  103. data/examples/rails2/app/views/groups/_form.html +30 -0
  104. data/examples/rails2/app/views/groups/_form.plogic +11 -0
  105. data/examples/rails2/app/views/groups/_link.plogic +19 -0
  106. data/examples/rails2/app/views/groups/_read.plogic +7 -0
  107. data/examples/rails2/app/views/groups/edit.cfg.yaml +2 -0
  108. data/examples/rails2/app/views/groups/edit.html +26 -0
  109. data/examples/rails2/app/views/groups/edit.plogic +9 -0
  110. data/examples/rails2/app/views/groups/list.html +48 -0
  111. data/examples/rails2/app/views/groups/list.plogic +32 -0
  112. data/examples/rails2/app/views/groups/new.cfg.yaml +2 -0
  113. data/examples/rails2/app/views/groups/new.html +27 -0
  114. data/examples/rails2/app/views/groups/new.plogic +9 -0
  115. data/examples/rails2/app/views/groups/show.html +27 -0
  116. data/examples/rails2/app/views/groups/show.plogic +2 -0
  117. data/examples/rails2/app/views/layouts/groups.html +23 -0
  118. data/examples/rails2/app/views/layouts/groups.plogic +11 -0
  119. data/examples/rails2/app/views/layouts/members.html +23 -0
  120. data/examples/rails2/app/views/layouts/members.plogic +11 -0
  121. data/examples/rails2/app/views/layouts/members2.html +24 -0
  122. data/examples/rails2/app/views/layouts/members2.plogic +11 -0
  123. data/examples/rails2/app/views/members/_form.plogic +27 -0
  124. data/examples/rails2/app/views/members/_link.plogic +19 -0
  125. data/examples/rails2/app/views/members/_read.plogic +29 -0
  126. data/examples/rails2/app/views/members/edit.cfg.yaml +6 -0
  127. data/examples/rails2/app/views/members/edit.html +27 -0
  128. data/examples/rails2/app/views/members/edit.plogic +10 -0
  129. data/examples/rails2/app/views/members/list.html +53 -0
  130. data/examples/rails2/app/views/members/list.plogic +32 -0
  131. data/examples/rails2/app/views/members/new.html +61 -0
  132. data/examples/rails2/app/views/members/new.plogic +17 -0
  133. data/examples/rails2/app/views/members/show.html +41 -0
  134. data/examples/rails2/app/views/members/show.plogic +3 -0
  135. data/examples/rails2/db/create-tables.mysql.sql +27 -0
  136. data/examples/rails2/db/create-tables.pgsql.sql +27 -0
  137. data/examples/rails2/db/insert-data.sql +21 -0
  138. data/examples/rails2/db/tabledef.yaml +51 -0
  139. data/kwartz.gemspec +4 -4
  140. data/lib/kwartz.rb +10 -2
  141. data/lib/kwartz/assert.rb +1 -1
  142. data/lib/kwartz/binding/eperl.rb +85 -61
  143. data/lib/kwartz/binding/erubis.rb +6 -8
  144. data/lib/kwartz/binding/eruby.rb +5 -120
  145. data/lib/kwartz/binding/jstl.rb +116 -101
  146. data/lib/kwartz/binding/php.rb +79 -60
  147. data/lib/kwartz/binding/pierubis.rb +58 -0
  148. data/lib/kwartz/binding/rails.rb +45 -42
  149. data/lib/kwartz/binding/ruby.rb +193 -0
  150. data/lib/kwartz/binding/struts.rb +1 -1
  151. data/lib/kwartz/config.rb +4 -3
  152. data/lib/kwartz/converter.rb +231 -68
  153. data/lib/kwartz/defun.rb +126 -0
  154. data/lib/kwartz/error.rb +1 -1
  155. data/lib/kwartz/helper/rails.rb +437 -0
  156. data/lib/kwartz/main.rb +30 -38
  157. data/lib/kwartz/node.rb +46 -31
  158. data/lib/kwartz/parser.rb +43 -15
  159. data/lib/kwartz/translator.rb +104 -6
  160. data/lib/kwartz/util.rb +113 -0
  161. data/lib/kwartz/util/assert-text-equal.rb +1 -1
  162. data/lib/kwartz/util/testcase-helper.rb +26 -8
  163. data/test/test-compile.rb +3 -3
  164. data/test/test-compile.yaml +135 -5
  165. data/test/test-converter.rb +16 -8
  166. data/test/test-converter.yaml +307 -76
  167. data/test/test-directives.rb +1 -1
  168. data/test/test-directives.yaml +964 -979
  169. data/test/test-main.rb +61 -146
  170. data/test/test-main.yaml +235 -0
  171. data/test/test-parser.rb +10 -12
  172. data/test/test-parser.yaml +484 -326
  173. data/test/test-rails.rb +1 -1
  174. data/test/test-rails.yaml +37 -37
  175. data/test/test-ruleset.rb +1 -1
  176. data/test/test-ruleset.yaml +34 -40
  177. data/test/test.rb +1 -1
  178. metadata +82 -3
  179. data/COPYING +0 -340
@@ -94,19 +94,20 @@ represents ‘name { … }’ entry in presentation logic file
94
94
  <h3 class="section-bar">Methods</h3>
95
95
 
96
96
  <div class="name-list">
97
- <a href="#M000074">_inspect</a>&nbsp;&nbsp;
98
- <a href="#M000063">new</a>&nbsp;&nbsp;
99
- <a href="#M000075">parse_error</a>&nbsp;&nbsp;
100
- <a href="#M000070">set_append</a>&nbsp;&nbsp;
101
- <a href="#M000069">set_attrs</a>&nbsp;&nbsp;
102
- <a href="#M000065">set_cont</a>&nbsp;&nbsp;
103
- <a href="#M000067">set_elem</a>&nbsp;&nbsp;
104
- <a href="#M000066">set_etag</a>&nbsp;&nbsp;
105
- <a href="#M000073">set_logic</a>&nbsp;&nbsp;
106
- <a href="#M000071">set_remove</a>&nbsp;&nbsp;
107
- <a href="#M000064">set_stag</a>&nbsp;&nbsp;
108
- <a href="#M000072">set_tagname</a>&nbsp;&nbsp;
109
- <a href="#M000068">set_value</a>&nbsp;&nbsp;
97
+ <a href="#M000111">_inspect</a>&nbsp;&nbsp;
98
+ <a href="#M000110">duplicate</a>&nbsp;&nbsp;
99
+ <a href="#M000099">new</a>&nbsp;&nbsp;
100
+ <a href="#M000112">parse_error</a>&nbsp;&nbsp;
101
+ <a href="#M000106">set_append</a>&nbsp;&nbsp;
102
+ <a href="#M000105">set_attrs</a>&nbsp;&nbsp;
103
+ <a href="#M000101">set_cont</a>&nbsp;&nbsp;
104
+ <a href="#M000103">set_elem</a>&nbsp;&nbsp;
105
+ <a href="#M000102">set_etag</a>&nbsp;&nbsp;
106
+ <a href="#M000109">set_logic</a>&nbsp;&nbsp;
107
+ <a href="#M000107">set_remove</a>&nbsp;&nbsp;
108
+ <a href="#M000100">set_stag</a>&nbsp;&nbsp;
109
+ <a href="#M000108">set_tagname</a>&nbsp;&nbsp;
110
+ <a href="#M000104">set_value</a>&nbsp;&nbsp;
110
111
  </div>
111
112
  </div>
112
113
 
@@ -191,19 +192,19 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
191
192
  <div id="methods">
192
193
  <h3 class="section-bar">Public Class methods</h3>
193
194
 
194
- <div id="method-M000063" class="method-detail">
195
- <a name="M000063"></a>
195
+ <div id="method-M000099" class="method-detail">
196
+ <a name="M000099"></a>
196
197
 
197
198
  <div class="method-heading">
198
- <a href="#M000063" class="method-signature">
199
+ <a href="#M000099" class="method-signature">
199
200
  <span class="method-name">new</span><span class="method-args">(name)</span>
200
201
  </a>
201
202
  </div>
202
203
 
203
204
  <div class="method-description">
204
205
  <p><a class="source-toggle" href="#"
205
- onclick="toggleCode('M000063-source');return false;">[Source]</a></p>
206
- <div class="method-source-code" id="M000063-source">
206
+ onclick="toggleCode('M000099-source');return false;">[Source]</a></p>
207
+ <div class="method-source-code" id="M000099-source">
207
208
  <pre>
208
209
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 216</span>
209
210
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">name</span>)
@@ -216,53 +217,53 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
216
217
 
217
218
  <h3 class="section-bar">Public Instance methods</h3>
218
219
 
219
- <div id="method-M000074" class="method-detail">
220
- <a name="M000074"></a>
220
+ <div id="method-M000111" class="method-detail">
221
+ <a name="M000111"></a>
221
222
 
222
223
  <div class="method-heading">
223
- <a href="#M000074" class="method-signature">
224
+ <a href="#M000111" class="method-signature">
224
225
  <span class="method-name">_inspect</span><span class="method-args">(indent=0)</span>
225
226
  </a>
226
227
  </div>
227
228
 
228
229
  <div class="method-description">
229
230
  <p><a class="source-toggle" href="#"
230
- onclick="toggleCode('M000074-source');return false;">[Source]</a></p>
231
- <div class="method-source-code" id="M000074-source">
231
+ onclick="toggleCode('M000111-source');return false;">[Source]</a></p>
232
+ <div class="method-source-code" id="M000111-source">
232
233
  <pre>
233
- <span class="ruby-comment cmt"># File kwartz/node.rb, line 315</span>
234
+ <span class="ruby-comment cmt"># File kwartz/node.rb, line 326</span>
234
235
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">_inspect</span>(<span class="ruby-identifier">indent</span>=<span class="ruby-value">0</span>)
235
236
  <span class="ruby-identifier">space</span> = <span class="ruby-value str">' '</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">indent</span>
236
237
  <span class="ruby-identifier">sb</span> = []
237
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;name: #{@name.inspect}\n&quot;</span>
238
- <span class="ruby-comment cmt">#sb &lt;&lt; space &lt;&lt; &quot;value: #{@value == nil ? '' : @value.inspect}\n&quot;</span>
239
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;stag: #{@stag.code.inspect}\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@stag</span>.<span class="ruby-identifier">nil?</span>
240
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;cont: #{@cont.code.inspect}\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@cont</span>.<span class="ruby-identifier">nil?</span>
241
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;etag: #{@etag.code.inspect}\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@etag</span>.<span class="ruby-identifier">nil?</span>
242
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;elem: #{@elem.code.inspect}\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@elem</span>.<span class="ruby-identifier">nil?</span>
238
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;- name: #{@name}\n&quot;</span>
239
+ <span class="ruby-comment cmt">#sb &lt;&lt; space &lt;&lt; &quot; value: #{@value == nil ? '' : @value}\n&quot;</span>
240
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; stag: #{@stag.code}\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@stag</span>.<span class="ruby-identifier">nil?</span>
241
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; cont: #{@cont.code}\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@cont</span>.<span class="ruby-identifier">nil?</span>
242
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; etag: #{@etag.code}\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@etag</span>.<span class="ruby-identifier">nil?</span>
243
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; elem: #{@elem.code}\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@elem</span>.<span class="ruby-identifier">nil?</span>
243
244
  <span class="ruby-comment cmt">#</span>
244
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;attrs:\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attrs</span>
245
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; attrs:\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attrs</span>
245
246
  <span class="ruby-ivar">@attrs</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span><span class="ruby-operator">|</span>
246
247
  <span class="ruby-identifier">val</span> = <span class="ruby-ivar">@attrs</span>[<span class="ruby-identifier">key</span>]
247
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; - name: #{key.inspect}\n&quot;</span>
248
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; value: #{val.code.inspect}\n&quot;</span>
248
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; - name: #{key}\n&quot;</span>
249
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; value: #{val.code}\n&quot;</span>
249
250
  <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attrs</span>
250
251
  <span class="ruby-comment cmt">#</span>
251
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;append:\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@append</span>
252
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; append:\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@append</span>
252
253
  <span class="ruby-ivar">@append</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">expr</span><span class="ruby-operator">|</span>
253
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; - #{expr.code.inspect}\n&quot;</span>
254
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; - #{expr.code}\n&quot;</span>
254
255
  <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@append</span>
255
256
  <span class="ruby-comment cmt">#</span>
256
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;remove:\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@remove</span>
257
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; remove:\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@remove</span>
257
258
  <span class="ruby-ivar">@remove</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
258
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; - #{name.inspect}\n&quot;</span>
259
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; - #{name}\n&quot;</span>
259
260
  <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@remove</span>
260
261
  <span class="ruby-comment cmt">#</span>
261
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;tagname: #{@tagname.inspect}\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tagname</span>.<span class="ruby-identifier">nil?</span>
262
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; tagname: #{@tagname}\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tagname</span>.<span class="ruby-identifier">nil?</span>
262
263
  <span class="ruby-comment cmt">#</span>
263
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;logic:\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@logic</span>
264
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; logic:\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@logic</span>
264
265
  <span class="ruby-ivar">@logic</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">stmt</span><span class="ruby-operator">|</span>
265
- <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; - &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">_inspect</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\n&quot;</span>
266
+ <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">space</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; - &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">_inspect</span>()
266
267
  <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@logic</span>
267
268
  <span class="ruby-comment cmt">#</span>
268
269
  <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sb</span>.<span class="ruby-identifier">join</span>
@@ -272,19 +273,48 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
272
273
  </div>
273
274
  </div>
274
275
 
275
- <div id="method-M000070" class="method-detail">
276
- <a name="M000070"></a>
276
+ <div id="method-M000110" class="method-detail">
277
+ <a name="M000110"></a>
278
+
279
+ <div class="method-heading">
280
+ <a href="#M000110" class="method-signature">
281
+ <span class="method-name">duplicate</span><span class="method-args">(name)</span>
282
+ </a>
283
+ </div>
284
+
285
+ <div class="method-description">
286
+ <p><a class="source-toggle" href="#"
287
+ onclick="toggleCode('M000110-source');return false;">[Source]</a></p>
288
+ <div class="method-source-code" id="M000110-source">
289
+ <pre>
290
+ <span class="ruby-comment cmt"># File kwartz/node.rb, line 315</span>
291
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">duplicate</span>(<span class="ruby-identifier">name</span>)
292
+ <span class="ruby-identifier">ruleset</span> = <span class="ruby-identifier">dup</span>()
293
+ <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>
294
+ <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">attrs</span> = <span class="ruby-ivar">@attrs</span>.<span class="ruby-identifier">dup</span>() <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attrs</span>
295
+ <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">append</span> = <span class="ruby-ivar">@append</span>.<span class="ruby-identifier">dup</span>() <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@append</span>
296
+ <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">remove</span> = <span class="ruby-ivar">@remove</span>.<span class="ruby-identifier">dup</span>() <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@remove</span>
297
+ <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">logic</span> = <span class="ruby-ivar">@logic</span>.<span class="ruby-identifier">dup</span>() <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@logic</span>
298
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ruleset</span>
299
+ <span class="ruby-keyword kw">end</span>
300
+ </pre>
301
+ </div>
302
+ </div>
303
+ </div>
304
+
305
+ <div id="method-M000106" class="method-detail">
306
+ <a name="M000106"></a>
277
307
 
278
308
  <div class="method-heading">
279
- <a href="#M000070" class="method-signature">
309
+ <a href="#M000106" class="method-signature">
280
310
  <span class="method-name">set_append</span><span class="method-args">(list, escape_flag=nil)</span>
281
311
  </a>
282
312
  </div>
283
313
 
284
314
  <div class="method-description">
285
315
  <p><a class="source-toggle" href="#"
286
- onclick="toggleCode('M000070-source');return false;">[Source]</a></p>
287
- <div class="method-source-code" id="M000070-source">
316
+ onclick="toggleCode('M000106-source');return false;">[Source]</a></p>
317
+ <div class="method-source-code" id="M000106-source">
288
318
  <pre>
289
319
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 259</span>
290
320
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_append</span>(<span class="ruby-identifier">list</span>, <span class="ruby-identifier">escape_flag</span>=<span class="ruby-keyword kw">nil</span>)
@@ -299,19 +329,19 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
299
329
  </div>
300
330
  </div>
301
331
 
302
- <div id="method-M000069" class="method-detail">
303
- <a name="M000069"></a>
332
+ <div id="method-M000105" class="method-detail">
333
+ <a name="M000105"></a>
304
334
 
305
335
  <div class="method-heading">
306
- <a href="#M000069" class="method-signature">
336
+ <a href="#M000105" class="method-signature">
307
337
  <span class="method-name">set_attrs</span><span class="method-args">(hash, escape_flag=nil)</span>
308
338
  </a>
309
339
  </div>
310
340
 
311
341
  <div class="method-description">
312
342
  <p><a class="source-toggle" href="#"
313
- onclick="toggleCode('M000069-source');return false;">[Source]</a></p>
314
- <div class="method-source-code" id="M000069-source">
343
+ onclick="toggleCode('M000105-source');return false;">[Source]</a></p>
344
+ <div class="method-source-code" id="M000105-source">
315
345
  <pre>
316
346
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 250</span>
317
347
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_attrs</span>(<span class="ruby-identifier">hash</span>, <span class="ruby-identifier">escape_flag</span>=<span class="ruby-keyword kw">nil</span>)
@@ -326,19 +356,19 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
326
356
  </div>
327
357
  </div>
328
358
 
329
- <div id="method-M000065" class="method-detail">
330
- <a name="M000065"></a>
359
+ <div id="method-M000101" class="method-detail">
360
+ <a name="M000101"></a>
331
361
 
332
362
  <div class="method-heading">
333
- <a href="#M000065" class="method-signature">
363
+ <a href="#M000101" class="method-signature">
334
364
  <span class="method-name">set_cont</span><span class="method-args">(str, escape_flag=nil)</span>
335
365
  </a>
336
366
  </div>
337
367
 
338
368
  <div class="method-description">
339
369
  <p><a class="source-toggle" href="#"
340
- onclick="toggleCode('M000065-source');return false;">[Source]</a></p>
341
- <div class="method-source-code" id="M000065-source">
370
+ onclick="toggleCode('M000101-source');return false;">[Source]</a></p>
371
+ <div class="method-source-code" id="M000101-source">
342
372
  <pre>
343
373
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 230</span>
344
374
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_cont</span>(<span class="ruby-identifier">str</span>, <span class="ruby-identifier">escape_flag</span>=<span class="ruby-keyword kw">nil</span>)
@@ -349,19 +379,19 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
349
379
  </div>
350
380
  </div>
351
381
 
352
- <div id="method-M000067" class="method-detail">
353
- <a name="M000067"></a>
382
+ <div id="method-M000103" class="method-detail">
383
+ <a name="M000103"></a>
354
384
 
355
385
  <div class="method-heading">
356
- <a href="#M000067" class="method-signature">
386
+ <a href="#M000103" class="method-signature">
357
387
  <span class="method-name">set_elem</span><span class="method-args">(str, escape_flag=nil)</span>
358
388
  </a>
359
389
  </div>
360
390
 
361
391
  <div class="method-description">
362
392
  <p><a class="source-toggle" href="#"
363
- onclick="toggleCode('M000067-source');return false;">[Source]</a></p>
364
- <div class="method-source-code" id="M000067-source">
393
+ onclick="toggleCode('M000103-source');return false;">[Source]</a></p>
394
+ <div class="method-source-code" id="M000103-source">
365
395
  <pre>
366
396
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 240</span>
367
397
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_elem</span>(<span class="ruby-identifier">str</span>, <span class="ruby-identifier">escape_flag</span>=<span class="ruby-keyword kw">nil</span>)
@@ -372,19 +402,19 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
372
402
  </div>
373
403
  </div>
374
404
 
375
- <div id="method-M000066" class="method-detail">
376
- <a name="M000066"></a>
405
+ <div id="method-M000102" class="method-detail">
406
+ <a name="M000102"></a>
377
407
 
378
408
  <div class="method-heading">
379
- <a href="#M000066" class="method-signature">
409
+ <a href="#M000102" class="method-signature">
380
410
  <span class="method-name">set_etag</span><span class="method-args">(str, escape_flag=nil)</span>
381
411
  </a>
382
412
  </div>
383
413
 
384
414
  <div class="method-description">
385
415
  <p><a class="source-toggle" href="#"
386
- onclick="toggleCode('M000066-source');return false;">[Source]</a></p>
387
- <div class="method-source-code" id="M000066-source">
416
+ onclick="toggleCode('M000102-source');return false;">[Source]</a></p>
417
+ <div class="method-source-code" id="M000102-source">
388
418
  <pre>
389
419
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 235</span>
390
420
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_etag</span>(<span class="ruby-identifier">str</span>, <span class="ruby-identifier">escape_flag</span>=<span class="ruby-keyword kw">nil</span>)
@@ -395,19 +425,19 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
395
425
  </div>
396
426
  </div>
397
427
 
398
- <div id="method-M000073" class="method-detail">
399
- <a name="M000073"></a>
428
+ <div id="method-M000109" class="method-detail">
429
+ <a name="M000109"></a>
400
430
 
401
431
  <div class="method-heading">
402
- <a href="#M000073" class="method-signature">
432
+ <a href="#M000109" class="method-signature">
403
433
  <span class="method-name">set_logic</span><span class="method-args">(logic_str)</span>
404
434
  </a>
405
435
  </div>
406
436
 
407
437
  <div class="method-description">
408
438
  <p><a class="source-toggle" href="#"
409
- onclick="toggleCode('M000073-source');return false;">[Source]</a></p>
410
- <div class="method-source-code" id="M000073-source">
439
+ onclick="toggleCode('M000109-source');return false;">[Source]</a></p>
440
+ <div class="method-source-code" id="M000109-source">
411
441
  <pre>
412
442
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 278</span>
413
443
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_logic</span>(<span class="ruby-identifier">logic_str</span>)
@@ -450,19 +480,19 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
450
480
  </div>
451
481
  </div>
452
482
 
453
- <div id="method-M000071" class="method-detail">
454
- <a name="M000071"></a>
483
+ <div id="method-M000107" class="method-detail">
484
+ <a name="M000107"></a>
455
485
 
456
486
  <div class="method-heading">
457
- <a href="#M000071" class="method-signature">
487
+ <a href="#M000107" class="method-signature">
458
488
  <span class="method-name">set_remove</span><span class="method-args">(list)</span>
459
489
  </a>
460
490
  </div>
461
491
 
462
492
  <div class="method-description">
463
493
  <p><a class="source-toggle" href="#"
464
- onclick="toggleCode('M000071-source');return false;">[Source]</a></p>
465
- <div class="method-source-code" id="M000071-source">
494
+ onclick="toggleCode('M000107-source');return false;">[Source]</a></p>
495
+ <div class="method-source-code" id="M000107-source">
466
496
  <pre>
467
497
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 268</span>
468
498
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_remove</span>(<span class="ruby-identifier">list</span>)
@@ -473,19 +503,19 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
473
503
  </div>
474
504
  </div>
475
505
 
476
- <div id="method-M000064" class="method-detail">
477
- <a name="M000064"></a>
506
+ <div id="method-M000100" class="method-detail">
507
+ <a name="M000100"></a>
478
508
 
479
509
  <div class="method-heading">
480
- <a href="#M000064" class="method-signature">
510
+ <a href="#M000100" class="method-signature">
481
511
  <span class="method-name">set_stag</span><span class="method-args">(str, escape_flag=nil)</span>
482
512
  </a>
483
513
  </div>
484
514
 
485
515
  <div class="method-description">
486
516
  <p><a class="source-toggle" href="#"
487
- onclick="toggleCode('M000064-source');return false;">[Source]</a></p>
488
- <div class="method-source-code" id="M000064-source">
517
+ onclick="toggleCode('M000100-source');return false;">[Source]</a></p>
518
+ <div class="method-source-code" id="M000100-source">
489
519
  <pre>
490
520
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 225</span>
491
521
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_stag</span>(<span class="ruby-identifier">str</span>, <span class="ruby-identifier">escape_flag</span>=<span class="ruby-keyword kw">nil</span>)
@@ -496,19 +526,19 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
496
526
  </div>
497
527
  </div>
498
528
 
499
- <div id="method-M000072" class="method-detail">
500
- <a name="M000072"></a>
529
+ <div id="method-M000108" class="method-detail">
530
+ <a name="M000108"></a>
501
531
 
502
532
  <div class="method-heading">
503
- <a href="#M000072" class="method-signature">
533
+ <a href="#M000108" class="method-signature">
504
534
  <span class="method-name">set_tagname</span><span class="method-args">(str)</span>
505
535
  </a>
506
536
  </div>
507
537
 
508
538
  <div class="method-description">
509
539
  <p><a class="source-toggle" href="#"
510
- onclick="toggleCode('M000072-source');return false;">[Source]</a></p>
511
- <div class="method-source-code" id="M000072-source">
540
+ onclick="toggleCode('M000108-source');return false;">[Source]</a></p>
541
+ <div class="method-source-code" id="M000108-source">
512
542
  <pre>
513
543
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 273</span>
514
544
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_tagname</span>(<span class="ruby-identifier">str</span>)
@@ -519,19 +549,19 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
519
549
  </div>
520
550
  </div>
521
551
 
522
- <div id="method-M000068" class="method-detail">
523
- <a name="M000068"></a>
552
+ <div id="method-M000104" class="method-detail">
553
+ <a name="M000104"></a>
524
554
 
525
555
  <div class="method-heading">
526
- <a href="#M000068" class="method-signature">
556
+ <a href="#M000104" class="method-signature">
527
557
  <span class="method-name">set_value</span><span class="method-args">(str, escape_flag=nil)</span>
528
558
  </a>
529
559
  </div>
530
560
 
531
561
  <div class="method-description">
532
562
  <p><a class="source-toggle" href="#"
533
- onclick="toggleCode('M000068-source');return false;">[Source]</a></p>
534
- <div class="method-source-code" id="M000068-source">
563
+ onclick="toggleCode('M000104-source');return false;">[Source]</a></p>
564
+ <div class="method-source-code" id="M000104-source">
535
565
  <pre>
536
566
  <span class="ruby-comment cmt"># File kwartz/node.rb, line 245</span>
537
567
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_value</span>(<span class="ruby-identifier">str</span>, <span class="ruby-identifier">escape_flag</span>=<span class="ruby-keyword kw">nil</span>)
@@ -544,21 +574,21 @@ represents &#8216;name { &#8230; }&#8217; entry in presentation logic file
544
574
 
545
575
  <h3 class="section-bar">Protected Instance methods</h3>
546
576
 
547
- <div id="method-M000075" class="method-detail">
548
- <a name="M000075"></a>
577
+ <div id="method-M000112" class="method-detail">
578
+ <a name="M000112"></a>
549
579
 
550
580
  <div class="method-heading">
551
- <a href="#M000075" class="method-signature">
581
+ <a href="#M000112" class="method-signature">
552
582
  <span class="method-name">parse_error</span><span class="method-args">(message, linenum)</span>
553
583
  </a>
554
584
  </div>
555
585
 
556
586
  <div class="method-description">
557
587
  <p><a class="source-toggle" href="#"
558
- onclick="toggleCode('M000075-source');return false;">[Source]</a></p>
559
- <div class="method-source-code" id="M000075-source">
588
+ onclick="toggleCode('M000112-source');return false;">[Source]</a></p>
589
+ <div class="method-source-code" id="M000112-source">
560
590
  <pre>
561
- <span class="ruby-comment cmt"># File kwartz/node.rb, line 356</span>
591
+ <span class="ruby-comment cmt"># File kwartz/node.rb, line 367</span>
562
592
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-identifier">message</span>, <span class="ruby-identifier">linenum</span>)
563
593
  <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ParseError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">message</span>, <span class="ruby-identifier">linenum</span>, <span class="ruby-keyword kw">nil</span>)
564
594
  <span class="ruby-keyword kw">end</span>
@@ -94,10 +94,10 @@ directive handler for ePerl
94
94
  <h3 class="section-bar">Methods</h3>
95
95
 
96
96
  <div class="name-list">
97
- <a href="#M000029">directive_format</a>&nbsp;&nbsp;
98
- <a href="#M000027">directive_pattern</a>&nbsp;&nbsp;
99
- <a href="#M000030">handle</a>&nbsp;&nbsp;
100
- <a href="#M000028">mapping_pattern</a>&nbsp;&nbsp;
97
+ <a href="#M000065">directive_format</a>&nbsp;&nbsp;
98
+ <a href="#M000063">directive_pattern</a>&nbsp;&nbsp;
99
+ <a href="#M000066">handle</a>&nbsp;&nbsp;
100
+ <a href="#M000064">mapping_pattern</a>&nbsp;&nbsp;
101
101
  </div>
102
102
  </div>
103
103
 
@@ -142,19 +142,19 @@ directive handler for ePerl
142
142
  <div id="methods">
143
143
  <h3 class="section-bar">Public Instance methods</h3>
144
144
 
145
- <div id="method-M000029" class="method-detail">
146
- <a name="M000029"></a>
145
+ <div id="method-M000065" class="method-detail">
146
+ <a name="M000065"></a>
147
147
 
148
148
  <div class="method-heading">
149
- <a href="#M000029" class="method-signature">
149
+ <a href="#M000065" class="method-signature">
150
150
  <span class="method-name">directive_format</span><span class="method-args">()</span>
151
151
  </a>
152
152
  </div>
153
153
 
154
154
  <div class="method-description">
155
155
  <p><a class="source-toggle" href="#"
156
- onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
157
- <div class="method-source-code" id="M000029-source">
156
+ onclick="toggleCode('M000065-source');return false;">[Source]</a></p>
157
+ <div class="method-source-code" id="M000065-source">
158
158
  <pre>
159
159
  <span class="ruby-comment cmt"># File kwartz/binding/eperl.rb, line 39</span>
160
160
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">directive_format</span>
@@ -165,19 +165,19 @@ directive handler for ePerl
165
165
  </div>
166
166
  </div>
167
167
 
168
- <div id="method-M000027" class="method-detail">
169
- <a name="M000027"></a>
168
+ <div id="method-M000063" class="method-detail">
169
+ <a name="M000063"></a>
170
170
 
171
171
  <div class="method-heading">
172
- <a href="#M000027" class="method-signature">
172
+ <a href="#M000063" class="method-signature">
173
173
  <span class="method-name">directive_pattern</span><span class="method-args">()</span>
174
174
  </a>
175
175
  </div>
176
176
 
177
177
  <div class="method-description">
178
178
  <p><a class="source-toggle" href="#"
179
- onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
180
- <div class="method-source-code" id="M000027-source">
179
+ onclick="toggleCode('M000063-source');return false;">[Source]</a></p>
180
+ <div class="method-source-code" id="M000063-source">
181
181
  <pre>
182
182
  <span class="ruby-comment cmt"># File kwartz/binding/eperl.rb, line 25</span>
183
183
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">directive_pattern</span>
@@ -188,30 +188,31 @@ directive handler for ePerl
188
188
  </div>
189
189
  </div>
190
190
 
191
- <div id="method-M000030" class="method-detail">
192
- <a name="M000030"></a>
191
+ <div id="method-M000066" class="method-detail">
192
+ <a name="M000066"></a>
193
193
 
194
194
  <div class="method-heading">
195
- <a href="#M000030" class="method-signature">
196
- <span class="method-name">handle</span><span class="method-args">(directive_name, directive_arg, directive_str, stag_info, etag_info, cont_stmts, attr_info, append_exprs, stmt_list)</span>
195
+ <a href="#M000066" class="method-signature">
196
+ <span class="method-name">handle</span><span class="method-args">(stmt_list, handler_arg)</span>
197
197
  </a>
198
198
  </div>
199
199
 
200
200
  <div class="method-description">
201
201
  <p><a class="source-toggle" href="#"
202
- onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
203
- <div class="method-source-code" id="M000030-source">
202
+ onclick="toggleCode('M000066-source');return false;">[Source]</a></p>
203
+ <div class="method-source-code" id="M000066-source">
204
204
  <pre>
205
205
  <span class="ruby-comment cmt"># File kwartz/binding/eperl.rb, line 44</span>
206
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle</span>(<span class="ruby-identifier">directive_name</span>, <span class="ruby-identifier">directive_arg</span>, <span class="ruby-identifier">directive_str</span>, <span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">etag_info</span>, <span class="ruby-identifier">cont_stmts</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>, <span class="ruby-identifier">stmt_list</span>)
206
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">handler_arg</span>)
207
207
  <span class="ruby-identifier">ret</span> = <span class="ruby-keyword kw">super</span>
208
208
  <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ret</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ret</span>
209
209
 
210
- <span class="ruby-identifier">d_name</span> = <span class="ruby-identifier">directive_name</span>
211
- <span class="ruby-identifier">d_arg</span> = <span class="ruby-identifier">directive_arg</span>
212
- <span class="ruby-identifier">d_str</span> = <span class="ruby-identifier">directive_str</span>
210
+ <span class="ruby-identifier">arg</span> = <span class="ruby-identifier">handler_arg</span>
211
+ <span class="ruby-identifier">d_name</span> = <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">directive_name</span>
212
+ <span class="ruby-identifier">d_arg</span> = <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">directive_arg</span>
213
+ <span class="ruby-identifier">d_str</span> = <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">directive_str</span>
213
214
 
214
- <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">directive_name</span>
215
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">d_name</span>
215
216
 
216
217
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:foreach</span>, <span class="ruby-identifier">:Foreach</span>, <span class="ruby-identifier">:FOREACH</span>, <span class="ruby-identifier">:list</span>, <span class="ruby-identifier">:List</span>, <span class="ruby-identifier">:LIST</span>
217
218
  <span class="ruby-identifier">is_foreach</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:foreach</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:Foreach</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:FOREACH</span>
@@ -221,72 +222,95 @@ directive handler for ePerl
221
222
  <span class="ruby-identifier">loopvar</span> = <span class="ruby-identifier">$1</span> ; <span class="ruby-identifier">loopval</span> = <span class="ruby-identifier">$2</span> ; <span class="ruby-identifier">looplist</span> = <span class="ruby-identifier">$3</span>
222
223
  <span class="ruby-identifier">counter</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:foreach</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:list</span> <span class="ruby-operator">?</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-operator">:</span> <span class="ruby-node">&quot;#{loopvar}_ctr&quot;</span>
223
224
  <span class="ruby-identifier">toggle</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">:FOREACH</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">d_name</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">:LIST</span> <span class="ruby-operator">?</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-operator">:</span> <span class="ruby-node">&quot;#{loopvar}_tgl&quot;</span>
224
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">is_foreach</span>
225
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;my #{counter} = 0;&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">counter</span>
225
+ <span class="ruby-identifier">code</span> = []
226
+ <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;my #{counter} = 0;&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">counter</span>
226
227
  <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">loopval</span>
227
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;foreach my #{loopvar} (keys #{looplist}) {&quot;</span>, <span class="ruby-identifier">:foreach</span>)
228
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot; my #{loopval} = #{looplist.sub(/\A%/,'$')}{#{loopvar}};&quot;</span>)
228
+ <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;foreach my #{loopvar} (keys #{looplist}) {&quot;</span>
229
+ <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; my #{loopval} = #{looplist.sub(/\A%/,'$')}{#{loopvar}};&quot;</span>
229
230
  <span class="ruby-keyword kw">else</span>
230
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;foreach my #{loopvar} (#{looplist}) {&quot;</span>, <span class="ruby-identifier">:foreach</span>)
231
+ <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;foreach my #{loopvar} (#{looplist}) {&quot;</span>
231
232
  <span class="ruby-keyword kw">end</span>
232
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot; #{counter}++;&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">counter</span>
233
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot; my #{toggle} = #{counter}%2==0 ? #{self.even} : #{self.odd};&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">toggle</span>
234
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_foreach</span>
235
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
236
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">etag_info</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_foreach</span>
237
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:foreach</span>)
238
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">etag_info</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">is_foreach</span>
239
-
240
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:while</span>, <span class="ruby-identifier">:loop</span>
241
- <span class="ruby-identifier">is_while</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:while</span>
242
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">is_while</span>
243
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;while (#{d_arg}) {&quot;</span>, <span class="ruby-identifier">:while</span>)
244
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_while</span>
245
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
246
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">etag_info</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_while</span>
247
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:while</span>)
248
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">etag_info</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">is_while</span>
233
+ <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; #{counter}++;&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">counter</span>
234
+ <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; my #{toggle} = #{counter}%2==0 ? #{self.even} : #{self.odd};&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">toggle</span>
235
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_foreach</span>
236
+ <span class="ruby-identifier">wrap_element_with_native_stmt</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">arg</span>, <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:foreach</span>)
237
+ <span class="ruby-keyword kw">else</span>
238
+ <span class="ruby-identifier">wrap_content_with_native_stmt</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">arg</span>, <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:foreach</span>)
239
+ <span class="ruby-keyword kw">end</span>
240
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt(arg) if !is_foreach</span>
241
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;my #{counter} = 0;&quot;) if counter</span>
242
+ <span class="ruby-comment cmt">#if loopval</span>
243
+ <span class="ruby-comment cmt"># stmt_list &lt;&lt; NativeStatement.new(&quot;foreach my #{loopvar} (keys #{looplist}) {&quot;, :foreach)</span>
244
+ <span class="ruby-comment cmt"># stmt_list &lt;&lt; NativeStatement.new(&quot; my #{loopval} = #{looplist.sub(/\A%/,'$')}{#{loopvar}};&quot;)</span>
245
+ <span class="ruby-comment cmt">#else</span>
246
+ <span class="ruby-comment cmt"># stmt_list &lt;&lt; NativeStatement.new(&quot;foreach my #{loopvar} (#{looplist}) {&quot;, :foreach)</span>
247
+ <span class="ruby-comment cmt">#end</span>
248
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot; #{counter}++;&quot;) if counter</span>
249
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot; my #{toggle} = #{counter}%2==0 ? #{self.even} : #{self.odd};&quot;) if toggle</span>
250
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt(arg) if is_foreach</span>
251
+ <span class="ruby-comment cmt">#stmt_list.concat(arg.cont_stmts)</span>
252
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt(arg) if is_foreach</span>
253
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;}&quot;, :foreach)</span>
254
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt(arg) if !is_foreach</span>
255
+
256
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:while</span>
257
+ <span class="ruby-identifier">wrap_element_with_native_stmt</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">arg</span>, <span class="ruby-node">&quot;while (#{d_arg}) {&quot;</span>, <span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:while</span>)
258
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;while (#{d_arg}) {&quot;, :while)</span>
259
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt(arg)</span>
260
+ <span class="ruby-comment cmt">#stmt_list.concat(cont_stmts)</span>
261
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt(arg)</span>
262
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;}&quot;, :while)</span>
263
+
264
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:loop</span>
265
+ <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">arg</span>)
266
+ <span class="ruby-identifier">wrap_content_with_native_stmt</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">arg</span>, <span class="ruby-node">&quot;while (#{d_arg}) {&quot;</span>, <span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:while</span>)
267
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt</span>
268
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;while (#{d_arg}) {&quot;, :while)</span>
269
+ <span class="ruby-comment cmt">#stmt_list.concat(cont_stmts)</span>
270
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;}&quot;, :while)</span>
271
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt</span>
249
272
 
250
273
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:set</span>
251
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{d_arg};&quot;</span>, <span class="ruby-identifier">:set</span>)
252
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>)
253
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
254
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">etag_info</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>)
274
+ <span class="ruby-identifier">wrap_element_with_native_stmt</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">arg</span>, <span class="ruby-node">&quot;#{d_arg};&quot;</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">:set</span>)
275
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;#{d_arg};&quot;, :set)</span>
276
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt</span>
277
+ <span class="ruby-comment cmt">#stmt_list.concat(cont_stmts)</span>
278
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt</span>
255
279
 
256
280
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:if</span>
257
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;if (#{d_arg}) {&quot;</span>, <span class="ruby-identifier">:if</span>)
258
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>)
259
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
260
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">etag_info</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>)
261
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:if</span>)
281
+ <span class="ruby-identifier">wrap_element_with_native_stmt</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">arg</span>, <span class="ruby-node">&quot;if (#{d_arg}) {&quot;</span>, <span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:if</span>)
282
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;if (#{d_arg}) {&quot;, :if)</span>
283
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt</span>
284
+ <span class="ruby-comment cmt">#stmt_list.concat(cont_stmts)</span>
285
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt</span>
286
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;}&quot;, :if)</span>
262
287
 
263
288
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:elsif</span>, <span class="ruby-identifier">:else</span>
264
- <span class="ruby-keyword kw">unless</span> <span class="ruby-operator">!</span><span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">st</span>=<span class="ruby-identifier">stmt_list</span>[<span class="ruby-value">-1</span>]).<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NativeStatement</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">st</span>.<span class="ruby-identifier">kind</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:if</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">st</span>.<span class="ruby-identifier">kind</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:elseif</span>)
265
- <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': previous statement should be 'if' or 'elsif'.&quot;</span>, <span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
266
- <span class="ruby-keyword kw">end</span>
267
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">pop</span> <span class="ruby-comment cmt"># delete 'end'</span>
268
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:else</span>
269
- <span class="ruby-identifier">kind</span> = <span class="ruby-identifier">:else</span>
270
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;} else {&quot;</span>, <span class="ruby-identifier">:else</span>)
271
- <span class="ruby-keyword kw">else</span>
272
- <span class="ruby-identifier">kind</span> = <span class="ruby-identifier">:elseif</span>
273
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;} elsif (#{d_arg}) {&quot;</span>, <span class="ruby-identifier">:elseif</span>)
274
- <span class="ruby-keyword kw">end</span>
275
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>)
276
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
277
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">etag_info</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>)
278
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">kind</span>)
289
+ <span class="ruby-identifier">error_when_last_stmt_is_not_if</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">arg</span>)
290
+ <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">pop</span> <span class="ruby-comment cmt"># delete '}'</span>
291
+ <span class="ruby-identifier">kind</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:else</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">:else</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">:elseif</span>
292
+ <span class="ruby-identifier">code</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:else</span> <span class="ruby-operator">?</span> <span class="ruby-value str">&quot;} else {&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-node">&quot;} elsif (#{d_arg}) {&quot;</span>
293
+ <span class="ruby-identifier">wrap_element_with_native_stmt</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">arg</span>, <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">kind</span>)
294
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(code, kind)</span>
295
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt</span>
296
+ <span class="ruby-comment cmt">#stmt_list.concat(cont_stmts)</span>
297
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt</span>
298
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;}&quot;, kind)</span>
279
299
 
280
300
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:default</span>, <span class="ruby-identifier">:Default</span>, <span class="ruby-identifier">:DEFAULT</span>
281
- <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">etag_info</span>, <span class="ruby-identifier">d_name</span>, <span class="ruby-identifier">d_arg</span>)
282
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>)
283
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new_without_newline</span>(<span class="ruby-node">&quot;if (#{d_arg}) {&quot;</span>, <span class="ruby-identifier">:if</span>)
301
+ <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">arg</span>)
302
+ <span class="ruby-identifier">expr_code</span> = <span class="ruby-identifier">d_arg</span>
284
303
  <span class="ruby-identifier">flag_escape</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:default</span> <span class="ruby-operator">?</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-operator">:</span> (<span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:Default</span>)
285
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">PrintStatement</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-constant">NativeExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">d_arg</span>, <span class="ruby-identifier">flag_escape</span>) ])
286
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new_without_newline</span>(<span class="ruby-value str">&quot;} else {&quot;</span>, <span class="ruby-identifier">:else</span>)
287
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
288
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new_without_newline</span>(<span class="ruby-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:else</span>)
289
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">etag_info</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>)
304
+ <span class="ruby-identifier">add_native_expr_with_default</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">arg</span>, <span class="ruby-identifier">expr_code</span>, <span class="ruby-identifier">flag_escape</span>,
305
+ <span class="ruby-node">&quot;if (#{d_arg}) {&quot;</span>, <span class="ruby-value str">&quot;} else {&quot;</span>, <span class="ruby-value str">&quot;}&quot;</span>)
306
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt(arg)</span>
307
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new_without_newline(&quot;if (#{d_arg}) {&quot;, :if)</span>
308
+ <span class="ruby-comment cmt">#flag_escape = d_name == :default ? nil : (d_name == :Default)</span>
309
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; PrintStatement.new([ NativeExpression.new(d_arg, flag_escape) ])</span>
310
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new_without_newline(&quot;} else {&quot;, :else)</span>
311
+ <span class="ruby-comment cmt">#stmt_list.concat(arg.cont_stmts)</span>
312
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new_without_newline(&quot;}&quot;, :else)</span>
313
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt(arg)</span>
290
314
 
291
315
  <span class="ruby-keyword kw">else</span>
292
316
  <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
@@ -300,19 +324,19 @@ directive handler for ePerl
300
324
  </div>
301
325
  </div>
302
326
 
303
- <div id="method-M000028" class="method-detail">
304
- <a name="M000028"></a>
327
+ <div id="method-M000064" class="method-detail">
328
+ <a name="M000064"></a>
305
329
 
306
330
  <div class="method-heading">
307
- <a href="#M000028" class="method-signature">
331
+ <a href="#M000064" class="method-signature">
308
332
  <span class="method-name">mapping_pattern</span><span class="method-args">()</span>
309
333
  </a>
310
334
  </div>
311
335
 
312
336
  <div class="method-description">
313
337
  <p><a class="source-toggle" href="#"
314
- onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
315
- <div class="method-source-code" id="M000028-source">
338
+ onclick="toggleCode('M000064-source');return false;">[Source]</a></p>
339
+ <div class="method-source-code" id="M000064-source">
316
340
  <pre>
317
341
  <span class="ruby-comment cmt"># File kwartz/binding/eperl.rb, line 32</span>
318
342
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mapping_pattern</span>