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
@@ -0,0 +1,113 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Kwartz::PIErubisHandler</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Kwartz::PIErubisHandler</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/kwartz/binding/pierubis_rb.html">
59
+ kwartz/binding/pierubis.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="RubyHandler.html">
69
+ RubyHandler
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+
84
+
85
+ </div>
86
+
87
+
88
+ </div>
89
+
90
+
91
+ <!-- if includes -->
92
+
93
+ <div id="section">
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+ <!-- if method_list -->
103
+
104
+
105
+ </div>
106
+
107
+
108
+ <div id="validator-badges">
109
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
110
+ </div>
111
+
112
+ </body>
113
+ </html>
@@ -0,0 +1,200 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Kwartz::PIErubisTranslator</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Kwartz::PIErubisTranslator</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/kwartz/binding/pierubis_rb.html">
59
+ kwartz/binding/pierubis.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="BaseTranslator.html">
69
+ BaseTranslator
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+ <div id="description">
84
+ <p>
85
+ translator for Erubis
86
+ </p>
87
+
88
+ </div>
89
+
90
+
91
+ </div>
92
+
93
+ <div id="method-list">
94
+ <h3 class="section-bar">Methods</h3>
95
+
96
+ <div class="name-list">
97
+ <a href="#M000160">new</a>&nbsp;&nbsp;
98
+ <a href="#M000161">translate_native_expr</a>&nbsp;&nbsp;
99
+ </div>
100
+ </div>
101
+
102
+ </div>
103
+
104
+
105
+ <!-- if includes -->
106
+
107
+ <div id="section">
108
+
109
+
110
+ <div id="constants-list">
111
+ <h3 class="section-bar">Constants</h3>
112
+
113
+ <div class="name-list">
114
+ <table summary="Constants">
115
+ <tr class="top-aligned-row context-row">
116
+ <td class="context-item-name">PIERUBIS_EMBED_PATTERNS</td>
117
+ <td>=</td>
118
+ <td class="context-item-value">[ '&lt;?rb ', ' ?&gt;', # statement '@!{', '}@', # expression '@{', '}@', # escaped expression ]</td>
119
+ </tr>
120
+ </table>
121
+ </div>
122
+ </div>
123
+
124
+
125
+
126
+
127
+
128
+
129
+ <!-- if method_list -->
130
+ <div id="methods">
131
+ <h3 class="section-bar">Public Class methods</h3>
132
+
133
+ <div id="method-M000160" class="method-detail">
134
+ <a name="M000160"></a>
135
+
136
+ <div class="method-heading">
137
+ <a href="#M000160" class="method-signature">
138
+ <span class="method-name">new</span><span class="method-args">(properties={})</span>
139
+ </a>
140
+ </div>
141
+
142
+ <div class="method-description">
143
+ <p><a class="source-toggle" href="#"
144
+ onclick="toggleCode('M000160-source');return false;">[Source]</a></p>
145
+ <div class="method-source-code" id="M000160-source">
146
+ <pre>
147
+ <span class="ruby-comment cmt"># File kwartz/binding/pierubis.rb, line 36</span>
148
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">properties</span>={})
149
+ <span class="ruby-keyword kw">super</span>(<span class="ruby-constant">PIERUBIS_EMBED_PATTERNS</span>, <span class="ruby-identifier">properties</span>)
150
+ <span class="ruby-comment cmt">#@escape = true if @escape == nil</span>
151
+ <span class="ruby-keyword kw">end</span>
152
+ </pre>
153
+ </div>
154
+ </div>
155
+ </div>
156
+
157
+ <h3 class="section-bar">Public Instance methods</h3>
158
+
159
+ <div id="method-M000161" class="method-detail">
160
+ <a name="M000161"></a>
161
+
162
+ <div class="method-heading">
163
+ <a href="#M000161" class="method-signature">
164
+ <span class="method-name">translate_native_expr</span><span class="method-args">(expr)</span>
165
+ </a>
166
+ </div>
167
+
168
+ <div class="method-description">
169
+ <p><a class="source-toggle" href="#"
170
+ onclick="toggleCode('M000161-source');return false;">[Source]</a></p>
171
+ <div class="method-source-code" id="M000161-source">
172
+ <pre>
173
+ <span class="ruby-comment cmt"># File kwartz/binding/pierubis.rb, line 42</span>
174
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">translate_native_expr</span>(<span class="ruby-identifier">expr</span>)
175
+ <span class="ruby-identifier">assert</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">expr</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NativeExpression</span>)
176
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">expr</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value">?}</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">expr</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value">?&gt;</span>)
177
+ <span class="ruby-ivar">@expr_l</span>, <span class="ruby-ivar">@expr_r</span>, <span class="ruby-ivar">@escape_l</span>, <span class="ruby-ivar">@escape_r</span> = <span class="ruby-value str">'&lt;%='</span>, <span class="ruby-value str">'%&gt;'</span>, <span class="ruby-value str">'&lt;%=='</span>, <span class="ruby-value str">'%&gt;'</span>
178
+ <span class="ruby-keyword kw">else</span>
179
+ <span class="ruby-ivar">@expr_l</span>, <span class="ruby-ivar">@expr_r</span>, <span class="ruby-ivar">@escape_l</span>, <span class="ruby-ivar">@escape_r</span> = <span class="ruby-value str">'@!{'</span>, <span class="ruby-value str">'}@'</span>, <span class="ruby-value str">'@{'</span>, <span class="ruby-value str">'}@'</span>
180
+ <span class="ruby-keyword kw">end</span>
181
+ <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">expr</span>)
182
+ <span class="ruby-keyword kw">end</span>
183
+ </pre>
184
+ </div>
185
+ </div>
186
+ </div>
187
+
188
+
189
+ </div>
190
+
191
+
192
+ </div>
193
+
194
+
195
+ <div id="validator-badges">
196
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
197
+ </div>
198
+
199
+ </body>
200
+ </html>
@@ -88,7 +88,7 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000174">new</a>&nbsp;&nbsp;
91
+ <a href="#M000226">new</a>&nbsp;&nbsp;
92
92
  </div>
93
93
  </div>
94
94
 
@@ -110,19 +110,19 @@
110
110
  <div id="methods">
111
111
  <h3 class="section-bar">Public Class methods</h3>
112
112
 
113
- <div id="method-M000174" class="method-detail">
114
- <a name="M000174"></a>
113
+ <div id="method-M000226" class="method-detail">
114
+ <a name="M000226"></a>
115
115
 
116
116
  <div class="method-heading">
117
- <a href="#M000174" class="method-signature">
117
+ <a href="#M000226" class="method-signature">
118
118
  <span class="method-name">new</span><span class="method-args">(message, filename, linenum, column)</span>
119
119
  </a>
120
120
  </div>
121
121
 
122
122
  <div class="method-description">
123
123
  <p><a class="source-toggle" href="#"
124
- onclick="toggleCode('M000174-source');return false;">[Source]</a></p>
125
- <div class="method-source-code" id="M000174-source">
124
+ onclick="toggleCode('M000226-source');return false;">[Source]</a></p>
125
+ <div class="method-source-code" id="M000226-source">
126
126
  <pre>
127
127
  <span class="ruby-comment cmt"># File kwartz/parser.rb, line 48</span>
128
128
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">message</span>, <span class="ruby-identifier">filename</span>, <span class="ruby-identifier">linenum</span>, <span class="ruby-identifier">column</span>)
@@ -94,10 +94,10 @@ directive handler for PHP
94
94
  <h3 class="section-bar">Methods</h3>
95
95
 
96
96
  <div class="name-list">
97
- <a href="#M000021">directive_format</a>&nbsp;&nbsp;
98
- <a href="#M000019">directive_pattern</a>&nbsp;&nbsp;
99
- <a href="#M000022">handle</a>&nbsp;&nbsp;
100
- <a href="#M000020">mapping_pattern</a>&nbsp;&nbsp;
97
+ <a href="#M000061">directive_format</a>&nbsp;&nbsp;
98
+ <a href="#M000059">directive_pattern</a>&nbsp;&nbsp;
99
+ <a href="#M000062">handle</a>&nbsp;&nbsp;
100
+ <a href="#M000060">mapping_pattern</a>&nbsp;&nbsp;
101
101
  </div>
102
102
  </div>
103
103
 
@@ -142,19 +142,19 @@ directive handler for PHP
142
142
  <div id="methods">
143
143
  <h3 class="section-bar">Public Instance methods</h3>
144
144
 
145
- <div id="method-M000021" class="method-detail">
146
- <a name="M000021"></a>
145
+ <div id="method-M000061" class="method-detail">
146
+ <a name="M000061"></a>
147
147
 
148
148
  <div class="method-heading">
149
- <a href="#M000021" class="method-signature">
149
+ <a href="#M000061" 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('M000021-source');return false;">[Source]</a></p>
157
- <div class="method-source-code" id="M000021-source">
156
+ onclick="toggleCode('M000061-source');return false;">[Source]</a></p>
157
+ <div class="method-source-code" id="M000061-source">
158
158
  <pre>
159
159
  <span class="ruby-comment cmt"># File kwartz/binding/php.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 PHP
165
165
  </div>
166
166
  </div>
167
167
 
168
- <div id="method-M000019" class="method-detail">
169
- <a name="M000019"></a>
168
+ <div id="method-M000059" class="method-detail">
169
+ <a name="M000059"></a>
170
170
 
171
171
  <div class="method-heading">
172
- <a href="#M000019" class="method-signature">
172
+ <a href="#M000059" 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('M000019-source');return false;">[Source]</a></p>
180
- <div class="method-source-code" id="M000019-source">
179
+ onclick="toggleCode('M000059-source');return false;">[Source]</a></p>
180
+ <div class="method-source-code" id="M000059-source">
181
181
  <pre>
182
182
  <span class="ruby-comment cmt"># File kwartz/binding/php.rb, line 25</span>
183
183
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">directive_pattern</span>
@@ -188,100 +188,119 @@ directive handler for PHP
188
188
  </div>
189
189
  </div>
190
190
 
191
- <div id="method-M000022" class="method-detail">
192
- <a name="M000022"></a>
191
+ <div id="method-M000062" class="method-detail">
192
+ <a name="M000062"></a>
193
193
 
194
194
  <div class="method-heading">
195
- <a href="#M000022" 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="#M000062" 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('M000022-source');return false;">[Source]</a></p>
203
- <div class="method-source-code" id="M000022-source">
202
+ onclick="toggleCode('M000062-source');return false;">[Source]</a></p>
203
+ <div class="method-source-code" id="M000062-source">
204
204
  <pre>
205
205
  <span class="ruby-comment cmt"># File kwartz/binding/php.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>
218
219
  <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">d_arg</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/\A.*\s+as\s+(\$\w+)(?:\s*=&gt;\s*\$\w+)?\z/</span>
219
- <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': invalid argument.&quot;</span>, <span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
220
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': invalid argument.&quot;</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
220
221
  <span class="ruby-keyword kw">end</span>
221
222
  <span class="ruby-identifier">loopvar</span> = <span class="ruby-identifier">$1</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;#{counter} = 0;&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">counter</span>
226
- <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 (#{d_arg}) {&quot;</span>, <span class="ruby-identifier">:foreach</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; #{counter}++;&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">counter</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; #{toggle} = #{counter}%2==0 ? #{self.even} : #{self.odd};&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">toggle</span>
229
- <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>
230
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
231
- <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>
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-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:foreach</span>)
233
- <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>
234
-
235
- <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:while</span>, <span class="ruby-identifier">:loop</span>
236
- <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>
237
- <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>
238
- <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>)
239
- <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>
240
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
241
- <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>
242
- <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>)
243
- <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>
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;#{counter} = 0;&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">counter</span>
227
+ <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;foreach (#{d_arg}) {&quot;</span>
228
+ <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>
229
+ <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; #{toggle} = #{counter}%2==0 ? #{@even} : #{@odd};&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">toggle</span>
230
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_foreach</span>
231
+ <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">:foeach</span>)
232
+ <span class="ruby-keyword kw">else</span>
233
+ <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">:foeach</span>)
234
+ <span class="ruby-keyword kw">end</span>
235
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt(arg) if !is_foreach</span>
236
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;#{counter} = 0;&quot;) if counter</span>
237
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;foreach (#{d_arg}) {&quot;, :foreach)</span>
238
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot; #{counter}++;&quot;) if counter</span>
239
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot; #{toggle} = #{counter}%2==0 ? #{self.even} : #{self.odd};&quot;) if toggle</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.concat(arg.cont_stmts)</span>
242
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt(arg) if is_foreach</span>
243
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;}&quot;, :foreach)</span>
244
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt(arg) if !is_foreach</span>
245
+
246
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:while</span>
247
+ <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>)
248
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;while (#{d_arg}) {&quot;, :while)</span>
249
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt</span>
250
+ <span class="ruby-comment cmt">#stmt_list.concat(cont_stmts)</span>
251
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt</span>
252
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;}&quot;, :while)</span>
253
+
254
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:loop</span>
255
+ <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">arg</span>)
256
+ <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>)
257
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt</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.concat(cont_stmts)</span>
260
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;}&quot;, :while)</span>
261
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt</span>
244
262
 
245
263
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:set</span>
246
- <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>)
247
- <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>)
248
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
249
- <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>)
264
+ <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>)
265
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;#{d_arg};&quot;, :set)</span>
266
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt</span>
267
+ <span class="ruby-comment cmt">#stmt_list.concat(cont_stmts)</span>
268
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt</span>
250
269
 
251
270
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:if</span>
252
- <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>)
253
- <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>)
254
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
255
- <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>)
256
- <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>)
271
+ <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>)
272
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;if (#{d_arg}) {&quot;, :if)</span>
273
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt</span>
274
+ <span class="ruby-comment cmt">#stmt_list.concat(cont_stmts)</span>
275
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt</span>
276
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;}&quot;, :if)</span>
257
277
 
258
278
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:elseif</span>, <span class="ruby-identifier">:else</span>
259
- <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>)
260
- <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>)
261
- <span class="ruby-keyword kw">end</span>
262
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">pop</span> <span class="ruby-comment cmt"># delete 'end'</span>
263
- <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>
264
- <span class="ruby-identifier">kind</span> = <span class="ruby-identifier">:else</span>
265
- <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>)
266
- <span class="ruby-keyword kw">else</span>
267
- <span class="ruby-identifier">kind</span> = <span class="ruby-identifier">:elseif</span>
268
- <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;} elseif (#{d_arg}) {&quot;</span>, <span class="ruby-identifier">:elseif</span>)
269
- <span class="ruby-keyword kw">end</span>
270
- <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>)
271
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</span>)
272
- <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>)
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-value str">&quot;}&quot;</span>, <span class="ruby-identifier">kind</span>)
279
+ <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>)
280
+ <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">pop</span> <span class="ruby-comment cmt"># delete '}'</span>
281
+ <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>
282
+ <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;} elseif (#{d_arg}) {&quot;</span>
283
+ <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>)
284
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(code, kind)</span>
285
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt</span>
286
+ <span class="ruby-comment cmt">#stmt_list.concat(cont_stmts)</span>
287
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt</span>
288
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new(&quot;}&quot;, kind)</span>
274
289
 
275
290
  <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>
276
- <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>)
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">stag_info</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</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_without_newline</span>(<span class="ruby-node">&quot;if (#{d_arg}) {&quot;</span>, <span class="ruby-identifier">:if</span>)
291
+ <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">arg</span>)
292
+ <span class="ruby-identifier">expr_code</span> = <span class="ruby-identifier">d_arg</span>
279
293
  <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>)
280
- <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>) ])
281
- <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>)
282
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">cont_stmts</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-value str">&quot;}&quot;</span>, <span class="ruby-identifier">:else</span>)
284
- <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>)
294
+ <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>,
295
+ <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>)
296
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; stag_stmt(arg)</span>
297
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new_without_newline(&quot;if (#{d_arg}) {&quot;, :if)</span>
298
+ <span class="ruby-comment cmt">#flag_escape = d_name == :default ? nil : (d_name == :Default)</span>
299
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; PrintStatement.new([ NativeExpression.new(d_arg, flag_escape) ])</span>
300
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new_without_newline(&quot;} else {&quot;, :else)</span>
301
+ <span class="ruby-comment cmt">#stmt_list.concat(arg.cont_stmts)</span>
302
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; NativeStatement.new_without_newline(&quot;}&quot;, :else)</span>
303
+ <span class="ruby-comment cmt">#stmt_list &lt;&lt; etag_stmt(arg)</span>
285
304
 
286
305
  <span class="ruby-keyword kw">else</span>
287
306
  <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
@@ -295,19 +314,19 @@ directive handler for PHP
295
314
  </div>
296
315
  </div>
297
316
 
298
- <div id="method-M000020" class="method-detail">
299
- <a name="M000020"></a>
317
+ <div id="method-M000060" class="method-detail">
318
+ <a name="M000060"></a>
300
319
 
301
320
  <div class="method-heading">
302
- <a href="#M000020" class="method-signature">
321
+ <a href="#M000060" class="method-signature">
303
322
  <span class="method-name">mapping_pattern</span><span class="method-args">()</span>
304
323
  </a>
305
324
  </div>
306
325
 
307
326
  <div class="method-description">
308
327
  <p><a class="source-toggle" href="#"
309
- onclick="toggleCode('M000020-source');return false;">[Source]</a></p>
310
- <div class="method-source-code" id="M000020-source">
328
+ onclick="toggleCode('M000060-source');return false;">[Source]</a></p>
329
+ <div class="method-source-code" id="M000060-source">
311
330
  <pre>
312
331
  <span class="ruby-comment cmt"># File kwartz/binding/php.rb, line 32</span>
313
332
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mapping_pattern</span>