kwartz 3.1.2 → 3.2.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 (140) hide show
  1. data/CHANGES +444 -0
  2. data/README.txt +4 -1
  3. data/bin/kwartz +2 -2
  4. data/doc-api/classes/Kwartz.html +16 -7
  5. data/doc-api/classes/Kwartz/Assertion.html +6 -6
  6. data/doc-api/classes/Kwartz/AssertionError.html +6 -6
  7. data/doc-api/classes/Kwartz/AttrInfo.html +71 -61
  8. data/doc-api/classes/Kwartz/BaseError.html +12 -12
  9. data/doc-api/classes/Kwartz/BaseTranslator.html +104 -74
  10. data/doc-api/classes/Kwartz/CharacterType.html +24 -24
  11. data/doc-api/classes/Kwartz/CommandOptionError.html +7 -7
  12. data/doc-api/classes/Kwartz/CommandOptions.html +50 -50
  13. data/doc-api/classes/Kwartz/Config.html +5 -0
  14. data/doc-api/classes/Kwartz/ConvertError.html +12 -12
  15. data/doc-api/classes/Kwartz/Converter.html +31 -33
  16. data/doc-api/classes/Kwartz/CssStyleParser.html +207 -168
  17. data/doc-api/classes/Kwartz/Defun.html +32 -31
  18. data/doc-api/classes/Kwartz/{HandlerArgument.html → Directive.html} +27 -53
  19. data/doc-api/classes/Kwartz/ElementInfo.html +68 -53
  20. data/doc-api/classes/Kwartz/EperlExpressionParser.html +185 -0
  21. data/doc-api/classes/Kwartz/EperlHandler.html +65 -58
  22. data/doc-api/classes/Kwartz/EperlTranslator.html +14 -7
  23. data/doc-api/classes/Kwartz/ErubisTranslator.html +14 -7
  24. data/doc-api/classes/Kwartz/ErubyTranslator.html +14 -7
  25. data/doc-api/classes/Kwartz/ExpandStatement.html +20 -20
  26. data/doc-api/classes/Kwartz/Expander.html +358 -0
  27. data/doc-api/classes/Kwartz/Handler.html +287 -157
  28. data/doc-api/classes/Kwartz/{StatementHelper.html → HandlerHelper.html} +307 -112
  29. data/doc-api/classes/Kwartz/Helper/ActionViewHelper.html +23 -23
  30. data/doc-api/classes/Kwartz/Helper/RailsTemplate.html +96 -96
  31. data/doc-api/classes/Kwartz/JstlExpressionParser.html +181 -0
  32. data/doc-api/classes/Kwartz/JstlHandler.html +134 -126
  33. data/doc-api/classes/Kwartz/JstlTranslator.html +21 -14
  34. data/doc-api/classes/Kwartz/KwartzError.html +6 -6
  35. data/doc-api/classes/Kwartz/Main.html +4 -4
  36. data/doc-api/classes/Kwartz/NativeExpression.html +19 -19
  37. data/doc-api/classes/Kwartz/NativeStatement.html +24 -24
  38. data/doc-api/classes/Kwartz/Node.html +7 -7
  39. data/doc-api/classes/Kwartz/PIErubisTranslator.html +21 -14
  40. data/doc-api/classes/Kwartz/ParseError.html +6 -6
  41. data/doc-api/classes/Kwartz/PerlExpressionParser.html +185 -0
  42. data/doc-api/classes/Kwartz/PerlHandler.html +353 -0
  43. data/doc-api/classes/Kwartz/PerlTranslator.html +226 -0
  44. data/doc-api/classes/Kwartz/PhpExpressionParser.html +185 -0
  45. data/doc-api/classes/Kwartz/PhpHandler.html +63 -56
  46. data/doc-api/classes/Kwartz/PhpTranslator.html +21 -14
  47. data/doc-api/classes/Kwartz/PresentationLogicParser.html +126 -123
  48. data/doc-api/classes/Kwartz/PrintStatement.html +18 -18
  49. data/doc-api/classes/Kwartz/RailsHandler.html +84 -85
  50. data/doc-api/classes/Kwartz/RailsTranslator.html +13 -6
  51. data/doc-api/classes/Kwartz/RubyExpressionParser.html +180 -0
  52. data/doc-api/classes/Kwartz/RubyHandler.html +73 -69
  53. data/doc-api/classes/Kwartz/RubyStyleParser.html +86 -86
  54. data/doc-api/classes/Kwartz/RubyTranslator.html +28 -21
  55. data/doc-api/classes/Kwartz/Ruleset.html +622 -1
  56. data/doc-api/classes/Kwartz/StrutsTranslator.html +14 -14
  57. data/doc-api/classes/Kwartz/TagInfo.html +52 -27
  58. data/doc-api/classes/Kwartz/TextConverter.html +75 -37
  59. data/doc-api/classes/Kwartz/Translator.html +54 -53
  60. data/doc-api/classes/Kwartz/Util.html +25 -25
  61. data/doc-api/created.rid +1 -1
  62. data/doc-api/files/__/README_txt.html +7 -2
  63. data/doc-api/files/kwartz/assert_rb.html +2 -2
  64. data/doc-api/files/kwartz/binding/eperl_rb.html +2 -2
  65. data/doc-api/files/kwartz/binding/erubis_rb.html +2 -2
  66. data/doc-api/files/kwartz/binding/eruby_rb.html +2 -2
  67. data/doc-api/files/kwartz/binding/jstl_rb.html +2 -2
  68. data/doc-api/files/kwartz/binding/perl_rb.html +115 -0
  69. data/doc-api/files/kwartz/binding/php_rb.html +2 -2
  70. data/doc-api/files/kwartz/binding/pierubis_rb.html +2 -2
  71. data/doc-api/files/kwartz/binding/rails_rb.html +2 -2
  72. data/doc-api/files/kwartz/binding/ruby_rb.html +2 -2
  73. data/doc-api/files/kwartz/binding/struts_rb.html +2 -2
  74. data/doc-api/files/kwartz/config_rb.html +2 -2
  75. data/doc-api/files/kwartz/converter_rb.html +2 -2
  76. data/doc-api/files/kwartz/defun_rb.html +2 -2
  77. data/doc-api/files/kwartz/error_rb.html +2 -2
  78. data/doc-api/files/kwartz/helper/rails_rb.html +2 -2
  79. data/doc-api/files/kwartz/main_rb.html +3 -2
  80. data/doc-api/files/kwartz/node_rb.html +2 -2
  81. data/doc-api/files/kwartz/parser_rb.html +2 -2
  82. data/doc-api/files/kwartz/translator_rb.html +2 -2
  83. data/doc-api/files/kwartz/util/assert-text-equal_rb.html +2 -2
  84. data/doc-api/files/kwartz/util/testcase-helper_rb.html +2 -2
  85. data/doc-api/files/kwartz/util_rb.html +2 -2
  86. data/doc-api/files/kwartz_rb.html +2 -2
  87. data/doc-api/fr_class_index.html +10 -5
  88. data/doc-api/fr_file_index.html +1 -0
  89. data/doc-api/fr_method_index.html +268 -239
  90. data/doc/docstyle.css +9 -3
  91. data/doc/img/fig05.png +0 -0
  92. data/doc/introduction-to-kwartz.html +3040 -0
  93. data/doc/pattern-catalog.html +5 -3
  94. data/doc/reference.html +680 -26
  95. data/doc/users-guide.html +222 -67
  96. data/kwartz.gemspec +4 -4
  97. data/lib/kwartz.rb +3 -3
  98. data/lib/kwartz/assert.rb +2 -2
  99. data/lib/kwartz/binding/eperl.rb +71 -31
  100. data/lib/kwartz/binding/erubis.rb +3 -2
  101. data/lib/kwartz/binding/eruby.rb +3 -2
  102. data/lib/kwartz/binding/jstl.rb +66 -29
  103. data/lib/kwartz/binding/perl.rb +230 -0
  104. data/lib/kwartz/binding/php.rb +69 -29
  105. data/lib/kwartz/binding/pierubis.rb +3 -2
  106. data/lib/kwartz/binding/rails.rb +18 -18
  107. data/lib/kwartz/binding/ruby.rb +74 -42
  108. data/lib/kwartz/binding/struts.rb +22 -21
  109. data/lib/kwartz/config.rb +4 -4
  110. data/lib/kwartz/converter.rb +465 -345
  111. data/lib/kwartz/defun.rb +2 -2
  112. data/lib/kwartz/error.rb +2 -2
  113. data/lib/kwartz/helper/rails.rb +2 -2
  114. data/lib/kwartz/main.rb +5 -4
  115. data/lib/kwartz/node.rb +92 -144
  116. data/lib/kwartz/parser.rb +112 -103
  117. data/lib/kwartz/translator.rb +14 -6
  118. data/lib/kwartz/util.rb +2 -2
  119. data/lib/kwartz/util/assert-text-equal.rb +2 -2
  120. data/lib/kwartz/util/testcase-helper.rb +1 -1
  121. data/test/test-compile.rb +2 -2
  122. data/test/test-compile.yaml +81 -0
  123. data/test/test-converter.rb +4 -8
  124. data/test/test-converter.yaml +152 -3
  125. data/test/test-directives.rb +2 -2
  126. data/test/test-directives.yaml +222 -0
  127. data/test/test-main.rb +6 -4
  128. data/test/test-main.yaml +66 -1
  129. data/test/test-parser.rb +12 -3
  130. data/test/test-parser.yaml +64 -51
  131. data/test/test-rails.rb +2 -2
  132. data/test/test-ruleset.rb +2 -2
  133. data/test/test-ruleset.yaml +465 -4
  134. data/test/test.log +6 -0
  135. data/test/test.rb +2 -2
  136. metadata +116 -106
  137. data/ChangeLog +0 -156
  138. data/doc-api/classes/Kwartz/DocumentRuleset.html +0 -369
  139. data/doc-api/classes/Kwartz/ElementExpander.html +0 -325
  140. data/doc-api/classes/Kwartz/ElementRuleset.html +0 -612
@@ -5,7 +5,7 @@
5
5
 
6
6
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
7
  <head>
8
- <title>Module: Kwartz::StatementHelper</title>
8
+ <title>Module: Kwartz::HandlerHelper</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
11
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
@@ -50,7 +50,7 @@
50
50
  <table class="header-table">
51
51
  <tr class="top-aligned-row">
52
52
  <td><strong>Module</strong></td>
53
- <td class="class-name-in-header">Kwartz::StatementHelper</td>
53
+ <td class="class-name-in-header">Kwartz::HandlerHelper</td>
54
54
  </tr>
55
55
  <tr class="top-aligned-row">
56
56
  <td><strong>In:</strong></td>
@@ -80,17 +80,23 @@
80
80
  <h3 class="section-bar">Methods</h3>
81
81
 
82
82
  <div class="name-list">
83
- <a href="#M000010">add_foreach_stmts</a>&nbsp;&nbsp;
84
- <a href="#M000007">add_native_code</a>&nbsp;&nbsp;
85
- <a href="#M000011">add_native_expr_with_default</a>&nbsp;&nbsp;
86
- <a href="#M000002">build_print_args</a>&nbsp;&nbsp;
87
- <a href="#M000004">build_print_expr_stmt</a>&nbsp;&nbsp;
88
- <a href="#M000003">build_print_stmt</a>&nbsp;&nbsp;
89
- <a href="#M000001">create_text_print_stmt</a>&nbsp;&nbsp;
90
- <a href="#M000006">etag_stmt</a>&nbsp;&nbsp;
91
- <a href="#M000005">stag_stmt</a>&nbsp;&nbsp;
92
- <a href="#M000009">wrap_content_with_native_stmt</a>&nbsp;&nbsp;
93
- <a href="#M000008">wrap_element_with_native_stmt</a>&nbsp;&nbsp;
83
+ <a href="#M000008">_last_stmt_kind</a>&nbsp;&nbsp;
84
+ <a href="#M000021">add_foreach_stmts</a>&nbsp;&nbsp;
85
+ <a href="#M000018">add_native_code</a>&nbsp;&nbsp;
86
+ <a href="#M000022">add_native_expr_with_default</a>&nbsp;&nbsp;
87
+ <a href="#M000010">build_print_args</a>&nbsp;&nbsp;
88
+ <a href="#M000012">build_print_expr_stmt</a>&nbsp;&nbsp;
89
+ <a href="#M000011">build_print_stmt</a>&nbsp;&nbsp;
90
+ <a href="#M000009">create_text_print_stmt</a>&nbsp;&nbsp;
91
+ <a href="#M000006">error_if_empty_tag</a>&nbsp;&nbsp;
92
+ <a href="#M000007">error_when_last_stmt_is_not_if</a>&nbsp;&nbsp;
93
+ <a href="#M000017">etag_stmt</a>&nbsp;&nbsp;
94
+ <a href="#M000013">expand_attr_vars</a>&nbsp;&nbsp;
95
+ <a href="#M000014">expand_attr_vars_in_native_expr</a>&nbsp;&nbsp;
96
+ <a href="#M000015">expand_attr_vars_in_native_stmt</a>&nbsp;&nbsp;
97
+ <a href="#M000016">stag_stmt</a>&nbsp;&nbsp;
98
+ <a href="#M000020">wrap_content_with_native_stmt</a>&nbsp;&nbsp;
99
+ <a href="#M000019">wrap_element_with_native_stmt</a>&nbsp;&nbsp;
94
100
  </div>
95
101
  </div>
96
102
 
@@ -112,56 +118,84 @@
112
118
  <div id="methods">
113
119
  <h3 class="section-bar">Public Instance methods</h3>
114
120
 
115
- <div id="method-M000010" class="method-detail">
116
- <a name="M000010"></a>
121
+ <div id="method-M000008" class="method-detail">
122
+ <a name="M000008"></a>
117
123
 
118
124
  <div class="method-heading">
119
- <a href="#M000010" class="method-signature">
120
- <span class="method-name">add_foreach_stmts</span><span class="method-args">(stmt_list, handler_arg, foreach_code, endforeach_code, content_only, counter, toggle, init_code, incr_code, toggle_code)</span>
125
+ <a href="#M000008" class="method-signature">
126
+ <span class="method-name">_last_stmt_kind</span><span class="method-args">(stmt_list)</span>
121
127
  </a>
122
128
  </div>
123
129
 
124
130
  <div class="method-description">
131
+ <p>
132
+ private
133
+ </p>
125
134
  <p><a class="source-toggle" href="#"
126
- onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
127
- <div class="method-source-code" id="M000010-source">
135
+ onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
136
+ <div class="method-source-code" id="M000008-source">
137
+ <pre>
138
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 273</span>
139
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">_last_stmt_kind</span>(<span class="ruby-identifier">stmt_list</span>)
140
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">empty?</span>
141
+ <span class="ruby-identifier">stmt</span> = <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">last</span>
142
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NativeStatement</span>)
143
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">kind</span>
144
+ <span class="ruby-keyword kw">end</span>
145
+ </pre>
146
+ </div>
147
+ </div>
148
+ </div>
149
+
150
+ <div id="method-M000021" class="method-detail">
151
+ <a name="M000021"></a>
152
+
153
+ <div class="method-heading">
154
+ <a href="#M000021" class="method-signature">
155
+ <span class="method-name">add_foreach_stmts</span><span class="method-args">(elem_info, stmt_list, foreach_code, endforeach_code, content_only, counter, toggle, init_code, incr_code, toggle_code)</span>
156
+ </a>
157
+ </div>
158
+
159
+ <div class="method-description">
160
+ <p><a class="source-toggle" href="#"
161
+ onclick="toggleCode('M000021-source');return false;">[Source]</a></p>
162
+ <div class="method-source-code" id="M000021-source">
128
163
  <pre>
129
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 389</span>
130
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_foreach_stmts</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">handler_arg</span>, <span class="ruby-identifier">foreach_code</span>, <span class="ruby-identifier">endforeach_code</span>,
164
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 431</span>
165
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_foreach_stmts</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">foreach_code</span>, <span class="ruby-identifier">endforeach_code</span>,
131
166
  <span class="ruby-identifier">content_only</span>, <span class="ruby-identifier">counter</span>, <span class="ruby-identifier">toggle</span>, <span class="ruby-identifier">init_code</span>, <span class="ruby-identifier">incr_code</span>, <span class="ruby-identifier">toggle_code</span>)
132
- <span class="ruby-identifier">arg</span> = <span class="ruby-identifier">handler_arg</span>
133
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">content_only</span>
167
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">elem_info</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">content_only</span>
134
168
  <span class="ruby-identifier">start_code</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">/\n/</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">code</span><span class="ruby-operator">|</span>
135
169
  <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-identifier">code</span>, <span class="ruby-identifier">kind</span>)
136
170
  <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">start_code</span>
137
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">content_only</span>
138
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">arg</span>.<span class="ruby-identifier">cont_stmts</span>)
139
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">content_only</span>
171
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">elem_info</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">content_only</span>
172
+ <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">cont_stmts</span>)
173
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">elem_info</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">content_only</span>
140
174
  <span class="ruby-identifier">end_code</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">/\n/</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">code</span><span class="ruby-operator">|</span>
141
175
  <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-identifier">code</span>, <span class="ruby-identifier">kind</span>)
142
176
  <span class="ruby-keyword kw">end</span>
143
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">content_only</span>
177
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">elem_info</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">content_only</span>
144
178
  <span class="ruby-keyword kw">end</span>
145
179
  </pre>
146
180
  </div>
147
181
  </div>
148
182
  </div>
149
183
 
150
- <div id="method-M000007" class="method-detail">
151
- <a name="M000007"></a>
184
+ <div id="method-M000018" class="method-detail">
185
+ <a name="M000018"></a>
152
186
 
153
187
  <div class="method-heading">
154
- <a href="#M000007" class="method-signature">
188
+ <a href="#M000018" class="method-signature">
155
189
  <span class="method-name">add_native_code</span><span class="method-args">(stmt_list, code, kind)</span>
156
190
  </a>
157
191
  </div>
158
192
 
159
193
  <div class="method-description">
160
194
  <p><a class="source-toggle" href="#"
161
- onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
162
- <div class="method-source-code" id="M000007-source">
195
+ onclick="toggleCode('M000018-source');return false;">[Source]</a></p>
196
+ <div class="method-source-code" id="M000018-source">
163
197
  <pre>
164
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 362</span>
198
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 404</span>
165
199
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_native_code</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">kind</span>)
166
200
  <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">code</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
167
201
  <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-identifier">code</span>, <span class="ruby-identifier">kind</span>)
@@ -174,43 +208,42 @@
174
208
  </div>
175
209
  </div>
176
210
 
177
- <div id="method-M000011" class="method-detail">
178
- <a name="M000011"></a>
211
+ <div id="method-M000022" class="method-detail">
212
+ <a name="M000022"></a>
179
213
 
180
214
  <div class="method-heading">
181
- <a href="#M000011" class="method-signature">
182
- <span class="method-name">add_native_expr_with_default</span><span class="method-args">(stmt_list, handler_arg, expr_code, flag_escape, if_code, else_code, endif_code)</span>
215
+ <a href="#M000022" class="method-signature">
216
+ <span class="method-name">add_native_expr_with_default</span><span class="method-args">(elem_info, stmt_list, expr_code, flag_escape, if_code, else_code, endif_code)</span>
183
217
  </a>
184
218
  </div>
185
219
 
186
220
  <div class="method-description">
187
221
  <p><a class="source-toggle" href="#"
188
- onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
189
- <div class="method-source-code" id="M000011-source">
222
+ onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
223
+ <div class="method-source-code" id="M000022-source">
190
224
  <pre>
191
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 406</span>
192
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_native_expr_with_default</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">handler_arg</span>,
225
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 447</span>
226
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_native_expr_with_default</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>,
193
227
  <span class="ruby-identifier">expr_code</span>, <span class="ruby-identifier">flag_escape</span>,
194
228
  <span class="ruby-identifier">if_code</span>, <span class="ruby-identifier">else_code</span>, <span class="ruby-identifier">endif_code</span>)
195
- <span class="ruby-identifier">arg</span> = <span class="ruby-identifier">handler_arg</span>
196
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">arg</span>)
229
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">elem_info</span>)
197
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_without_newline</span>(<span class="ruby-identifier">if_code</span>, <span class="ruby-identifier">:if</span>)
198
231
  <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">expr_code</span>, <span class="ruby-identifier">flag_escape</span>) ])
199
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_without_newline</span>(<span class="ruby-identifier">else_code</span>, <span class="ruby-identifier">:else</span>)
200
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">arg</span>.<span class="ruby-identifier">cont_stmts</span>)
233
+ <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">cont_stmts</span>)
201
234
  <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-identifier">endif_code</span>, <span class="ruby-identifier">:else</span>)
202
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">arg</span>)
235
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">elem_info</span>)
203
236
  <span class="ruby-keyword kw">end</span>
204
237
  </pre>
205
238
  </div>
206
239
  </div>
207
240
  </div>
208
241
 
209
- <div id="method-M000002" class="method-detail">
210
- <a name="M000002"></a>
242
+ <div id="method-M000010" class="method-detail">
243
+ <a name="M000010"></a>
211
244
 
212
245
  <div class="method-heading">
213
- <a href="#M000002" class="method-signature">
246
+ <a href="#M000010" class="method-signature">
214
247
  <span class="method-name">build_print_args</span><span class="method-args">(taginfo, attr_info, append_exprs)</span>
215
248
  </a>
216
249
  </div>
@@ -222,10 +255,10 @@ href="NativeExpression.html">NativeExpression</a> for <a
222
255
  href="PrintStatement.html">PrintStatement</a>
223
256
  </p>
224
257
  <p><a class="source-toggle" href="#"
225
- onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
226
- <div class="method-source-code" id="M000002-source">
258
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
259
+ <div class="method-source-code" id="M000010-source">
227
260
  <pre>
228
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 290</span>
261
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 289</span>
229
262
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">build_print_args</span>(<span class="ruby-identifier">taginfo</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>)
230
263
  <span class="ruby-keyword kw">return</span> [] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">taginfo</span>.<span class="ruby-identifier">tagname</span>.<span class="ruby-identifier">nil?</span>
231
264
  <span class="ruby-comment cmt">#if taginfo.tagname.nil?</span>
@@ -244,8 +277,9 @@ href="PrintStatement.html">PrintStatement</a>
244
277
  <span class="ruby-identifier">attr_info</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">space</span>, <span class="ruby-identifier">aname</span>, <span class="ruby-identifier">avalue</span><span class="ruby-operator">|</span>
245
278
  <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{space}#{aname}=\&quot;&quot;</span>
246
279
  <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">avalue</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NativeExpression</span>)
280
+ <span class="ruby-identifier">native_expr</span> = <span class="ruby-identifier">expand_attr_vars_in_native_expr</span>(<span class="ruby-identifier">avalue</span>, <span class="ruby-identifier">attr_info</span>)
247
281
  <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">sb</span> <span class="ruby-comment cmt"># TextExpression.new(sb)</span>
248
- <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">avalue</span>
282
+ <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">native_expr</span>
249
283
  <span class="ruby-identifier">sb</span> = <span class="ruby-value str">''</span>
250
284
  <span class="ruby-keyword kw">else</span>
251
285
  <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">avalue</span>
@@ -257,7 +291,10 @@ href="PrintStatement.html">PrintStatement</a>
257
291
  <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">sb</span> <span class="ruby-comment cmt"># TextExpression.new(sb)</span>
258
292
  <span class="ruby-identifier">sb</span> = <span class="ruby-value str">''</span>
259
293
  <span class="ruby-keyword kw">end</span>
260
- <span class="ruby-identifier">args</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">append_exprs</span>)
294
+ <span class="ruby-identifier">append_exprs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">append_expr</span><span class="ruby-operator">|</span>
295
+ <span class="ruby-identifier">native_expr</span> = <span class="ruby-identifier">expand_attr_vars_in_native_expr</span>(<span class="ruby-identifier">append_expr</span>, <span class="ruby-identifier">attr_info</span>)
296
+ <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">native_expr</span>
297
+ <span class="ruby-keyword kw">end</span>
261
298
  <span class="ruby-keyword kw">end</span>
262
299
  <span class="ruby-identifier">sb</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{t.extra_space}#{t.is_empty ? '/' : ''}&gt;#{t.tail_space}&quot;</span>
263
300
  <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">sb</span> <span class="ruby-comment cmt"># TextExpression.new(sb)</span>
@@ -268,12 +305,12 @@ href="PrintStatement.html">PrintStatement</a>
268
305
  </div>
269
306
  </div>
270
307
 
271
- <div id="method-M000004" class="method-detail">
272
- <a name="M000004"></a>
308
+ <div id="method-M000012" class="method-detail">
309
+ <a name="M000012"></a>
273
310
 
274
311
  <div class="method-heading">
275
- <a href="#M000004" class="method-signature">
276
- <span class="method-name">build_print_expr_stmt</span><span class="method-args">(native_expr, stag_info, etag_info)</span>
312
+ <a href="#M000012" class="method-signature">
313
+ <span class="method-name">build_print_expr_stmt</span><span class="method-args">(native_expr, stag_info, etag_info, attr_info=nil)</span>
277
314
  </a>
278
315
  </div>
279
316
 
@@ -283,15 +320,16 @@ create <a href="PrintStatement.html">PrintStatement</a> for <a
283
320
  href="NativeExpression.html">NativeExpression</a>
284
321
  </p>
285
322
  <p><a class="source-toggle" href="#"
286
- onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
287
- <div class="method-source-code" id="M000004-source">
323
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
324
+ <div class="method-source-code" id="M000012-source">
288
325
  <pre>
289
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 337</span>
290
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">build_print_expr_stmt</span>(<span class="ruby-identifier">native_expr</span>, <span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">etag_info</span>)
326
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 340</span>
327
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">build_print_expr_stmt</span>(<span class="ruby-identifier">native_expr</span>, <span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">etag_info</span>, <span class="ruby-identifier">attr_info</span>=<span class="ruby-keyword kw">nil</span>)
291
328
  <span class="ruby-identifier">head_space</span> = (<span class="ruby-identifier">stag_info</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">etag_info</span>).<span class="ruby-identifier">head_space</span>
292
329
  <span class="ruby-identifier">tail_space</span> = (<span class="ruby-identifier">etag_info</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">stag_info</span>).<span class="ruby-identifier">tail_space</span>
330
+ <span class="ruby-identifier">native_expr</span> = <span class="ruby-identifier">expand_attr_vars_in_native_expr</span>(<span class="ruby-identifier">native_expr</span>, <span class="ruby-identifier">attr_info</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attr_info</span>
293
331
  <span class="ruby-identifier">args</span> = []
294
- <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">head_space</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">head_space</span> <span class="ruby-comment cmt"># TexExpression.new(head_space)</span>
332
+ <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">head_space</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">head_space</span> <span class="ruby-comment cmt"># TextExpression.new(head_space)</span>
295
333
  <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">native_expr</span>
296
334
  <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">tail_space</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tail_space</span> <span class="ruby-comment cmt"># TextExpression.new(tail_space)</span>
297
335
  <span class="ruby-keyword kw">return</span> <span class="ruby-constant">PrintStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>)
@@ -301,11 +339,11 @@ href="NativeExpression.html">NativeExpression</a>
301
339
  </div>
302
340
  </div>
303
341
 
304
- <div id="method-M000003" class="method-detail">
305
- <a name="M000003"></a>
342
+ <div id="method-M000011" class="method-detail">
343
+ <a name="M000011"></a>
306
344
 
307
345
  <div class="method-heading">
308
- <a href="#M000003" class="method-signature">
346
+ <a href="#M000011" class="method-signature">
309
347
  <span class="method-name">build_print_stmt</span><span class="method-args">(taginfo, attr_info, append_exprs)</span>
310
348
  </a>
311
349
  </div>
@@ -316,10 +354,10 @@ create <a href="PrintStatement.html">PrintStatement</a> for <a
316
354
  href="TagInfo.html">TagInfo</a>
317
355
  </p>
318
356
  <p><a class="source-toggle" href="#"
319
- onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
320
- <div class="method-source-code" id="M000003-source">
357
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
358
+ <div class="method-source-code" id="M000011-source">
321
359
  <pre>
322
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 330</span>
360
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 333</span>
323
361
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">taginfo</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>)
324
362
  <span class="ruby-identifier">args</span> = <span class="ruby-identifier">build_print_args</span>(<span class="ruby-identifier">taginfo</span>, <span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">append_exprs</span>)
325
363
  <span class="ruby-keyword kw">return</span> <span class="ruby-constant">PrintStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>)
@@ -329,11 +367,11 @@ href="TagInfo.html">TagInfo</a>
329
367
  </div>
330
368
  </div>
331
369
 
332
- <div id="method-M000001" class="method-detail">
333
- <a name="M000001"></a>
370
+ <div id="method-M000009" class="method-detail">
371
+ <a name="M000009"></a>
334
372
 
335
373
  <div class="method-heading">
336
- <a href="#M000001" class="method-signature">
374
+ <a href="#M000009" class="method-signature">
337
375
  <span class="method-name">create_text_print_stmt</span><span class="method-args">(text)</span>
338
376
  </a>
339
377
  </div>
@@ -343,10 +381,10 @@ href="TagInfo.html">TagInfo</a>
343
381
  create print statement from text
344
382
  </p>
345
383
  <p><a class="source-toggle" href="#"
346
- onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
347
- <div class="method-source-code" id="M000001-source">
384
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
385
+ <div class="method-source-code" id="M000009-source">
348
386
  <pre>
349
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 283</span>
387
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 282</span>
350
388
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create_text_print_stmt</span>(<span class="ruby-identifier">text</span>)
351
389
  <span class="ruby-keyword kw">return</span> <span class="ruby-constant">PrintStatement</span>.<span class="ruby-identifier">new</span>([<span class="ruby-identifier">text</span>])
352
390
  <span class="ruby-comment cmt">#return PritnStatement.new([TextExpression.new(text)])</span>
@@ -361,102 +399,259 @@ create print statement from text
361
399
 
362
400
  <div class="method-heading">
363
401
  <a href="#M000006" class="method-signature">
364
- <span class="method-name">etag_stmt</span><span class="method-args">(handler_arg)</span>
402
+ <span class="method-name">error_if_empty_tag</span><span class="method-args">(elem_info, directive_str)</span>
365
403
  </a>
366
404
  </div>
367
405
 
368
406
  <div class="method-description">
369
407
  <p>
370
- build print statemetn of end-tag
408
+ raise error if etag_info is null
371
409
  </p>
372
410
  <p><a class="source-toggle" href="#"
373
411
  onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
374
412
  <div class="method-source-code" id="M000006-source">
375
413
  <pre>
376
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 356</span>
377
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">handler_arg</span>)
378
- <span class="ruby-identifier">arg</span> = <span class="ruby-identifier">handler_arg</span>
379
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">arg</span>.<span class="ruby-identifier">etag_info</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>)
414
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 253</span>
415
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">directive_str</span>)
416
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">etag_info</span>
417
+ <span class="ruby-identifier">msg</span> = <span class="ruby-node">&quot;'#{directive_str}': directive is not available with empty tag.&quot;</span>
418
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-identifier">msg</span>, <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
419
+ <span class="ruby-keyword kw">end</span>
380
420
  <span class="ruby-keyword kw">end</span>
381
421
  </pre>
382
422
  </div>
383
423
  </div>
384
424
  </div>
385
425
 
386
- <div id="method-M000005" class="method-detail">
387
- <a name="M000005"></a>
426
+ <div id="method-M000007" class="method-detail">
427
+ <a name="M000007"></a>
388
428
 
389
429
  <div class="method-heading">
390
- <a href="#M000005" class="method-signature">
391
- <span class="method-name">stag_stmt</span><span class="method-args">(handler_arg)</span>
430
+ <a href="#M000007" class="method-signature">
431
+ <span class="method-name">error_when_last_stmt_is_not_if</span><span class="method-args">(elem_info, directive_str, stmt_list)</span>
432
+ </a>
433
+ </div>
434
+
435
+ <div class="method-description">
436
+ <p><a class="source-toggle" href="#"
437
+ onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
438
+ <div class="method-source-code" id="M000007-source">
439
+ <pre>
440
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 261</span>
441
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error_when_last_stmt_is_not_if</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">directive_str</span>, <span class="ruby-identifier">stmt_list</span>)
442
+ <span class="ruby-identifier">kind</span> = <span class="ruby-identifier">_last_stmt_kind</span>(<span class="ruby-identifier">stmt_list</span>)
443
+ <span class="ruby-keyword kw">unless</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">kind</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:elseif</span>
444
+ <span class="ruby-identifier">msg</span> = <span class="ruby-node">&quot;'#{directive_str}': previous statement should be 'if' or 'elsif'.&quot;</span>
445
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-identifier">msg</span>, <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
446
+ <span class="ruby-keyword kw">end</span>
447
+ <span class="ruby-keyword kw">end</span>
448
+ </pre>
449
+ </div>
450
+ </div>
451
+ </div>
452
+
453
+ <div id="method-M000017" class="method-detail">
454
+ <a name="M000017"></a>
455
+
456
+ <div class="method-heading">
457
+ <a href="#M000017" class="method-signature">
458
+ <span class="method-name">etag_stmt</span><span class="method-args">(elem_info)</span>
392
459
  </a>
393
460
  </div>
394
461
 
395
462
  <div class="method-description">
396
463
  <p>
397
- build print statement of start-tag
464
+ build print statemetn of end-tag
398
465
  </p>
399
466
  <p><a class="source-toggle" href="#"
400
- onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
401
- <div class="method-source-code" id="M000005-source">
467
+ onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
468
+ <div class="method-source-code" id="M000017-source">
402
469
  <pre>
403
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 349</span>
404
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">handler_arg</span>)
405
- <span class="ruby-identifier">arg</span> = <span class="ruby-identifier">handler_arg</span>
406
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">append_exprs</span>)
470
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 399</span>
471
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">elem_info</span>)
472
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">etag_info</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>)
407
473
  <span class="ruby-keyword kw">end</span>
408
474
  </pre>
409
475
  </div>
410
476
  </div>
411
477
  </div>
412
478
 
413
- <div id="method-M000009" class="method-detail">
414
- <a name="M000009"></a>
479
+ <div id="method-M000013" class="method-detail">
480
+ <a name="M000013"></a>
415
481
 
416
482
  <div class="method-heading">
417
- <a href="#M000009" class="method-signature">
418
- <span class="method-name">wrap_content_with_native_stmt</span><span class="method-args">(stmt_list, handler_arg, start_code, end_code, kind=nil)</span>
483
+ <a href="#M000013" class="method-signature">
484
+ <span class="method-name">expand_attr_vars</span><span class="method-args">(code, attr_info)</span>
419
485
  </a>
420
486
  </div>
421
487
 
422
488
  <div class="method-description">
489
+ <p>
490
+ expand attribute variables (such as &#8217;$(rows)&#8217; or
491
+ &#8217;$(value)&#8217;) and return new code
492
+ </p>
423
493
  <p><a class="source-toggle" href="#"
424
- onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
425
- <div class="method-source-code" id="M000009-source">
494
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
495
+ <div class="method-source-code" id="M000013-source">
496
+ <pre>
497
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 353</span>
498
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expand_attr_vars</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">attr_info</span>)
499
+ <span class="ruby-identifier">new_code</span> = <span class="ruby-identifier">code</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\$\((\w+(?::\w+)?)\)/</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span>
500
+ <span class="ruby-identifier">aname</span> = <span class="ruby-identifier">$1</span>
501
+ <span class="ruby-comment cmt">#unless attrs.key?(aname)</span>
502
+ <span class="ruby-comment cmt"># raise &quot;#{m}: attribute '#{aname}' expected but not found.&quot;</span>
503
+ <span class="ruby-comment cmt">#end</span>
504
+ <span class="ruby-identifier">avalue</span> = <span class="ruby-identifier">attr_info</span>[<span class="ruby-identifier">aname</span>]
505
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">avalue</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NativeExpression</span>)
506
+ <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;#{m}: attribute value of '#{aname}' is NativeExpression object.&quot;</span>
507
+ <span class="ruby-keyword kw">end</span>
508
+ <span class="ruby-identifier">avalue</span>
509
+ <span class="ruby-keyword kw">end</span>
510
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">new_code</span>
511
+ <span class="ruby-keyword kw">end</span>
512
+ </pre>
513
+ </div>
514
+ </div>
515
+ </div>
516
+
517
+ <div id="method-M000014" class="method-detail">
518
+ <a name="M000014"></a>
519
+
520
+ <div class="method-heading">
521
+ <a href="#M000014" class="method-signature">
522
+ <span class="method-name">expand_attr_vars_in_native_expr</span><span class="method-args">(native_expr, attr_info)</span>
523
+ </a>
524
+ </div>
525
+
526
+ <div class="method-description">
527
+ <p>
528
+ expand attribute variables and return new <a
529
+ href="NativeExpression.html">NativeExpression</a>
530
+ </p>
531
+ <p><a class="source-toggle" href="#"
532
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
533
+ <div class="method-source-code" id="M000014-source">
534
+ <pre>
535
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 370</span>
536
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expand_attr_vars_in_native_expr</span>(<span class="ruby-identifier">native_expr</span>, <span class="ruby-identifier">attr_info</span>)
537
+ <span class="ruby-identifier">code</span> = <span class="ruby-identifier">expand_attr_vars</span>(<span class="ruby-identifier">native_expr</span>.<span class="ruby-identifier">code</span>, <span class="ruby-identifier">attr_info</span>)
538
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">code</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">native_expr</span>.<span class="ruby-identifier">code</span>
539
+ <span class="ruby-identifier">native_expr</span> = <span class="ruby-constant">NativeExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">native_expr</span>.<span class="ruby-identifier">escape</span>)
540
+ <span class="ruby-keyword kw">end</span>
541
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">native_expr</span>
542
+ <span class="ruby-keyword kw">end</span>
543
+ </pre>
544
+ </div>
545
+ </div>
546
+ </div>
547
+
548
+ <div id="method-M000015" class="method-detail">
549
+ <a name="M000015"></a>
550
+
551
+ <div class="method-heading">
552
+ <a href="#M000015" class="method-signature">
553
+ <span class="method-name">expand_attr_vars_in_native_stmt</span><span class="method-args">(native_stmt, attr_info)</span>
554
+ </a>
555
+ </div>
556
+
557
+ <div class="method-description">
558
+ <p>
559
+ expand attribute variables and return new <a
560
+ href="NativeExpression.html">NativeExpression</a>
561
+ </p>
562
+ <p><a class="source-toggle" href="#"
563
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
564
+ <div class="method-source-code" id="M000015-source">
426
565
  <pre>
427
566
  <span class="ruby-comment cmt"># File kwartz/converter.rb, line 380</span>
428
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wrap_content_with_native_stmt</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">handler_arg</span>, <span class="ruby-identifier">start_code</span>, <span class="ruby-identifier">end_code</span>, <span class="ruby-identifier">kind</span>=<span class="ruby-keyword kw">nil</span>)
429
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">handler_arg</span>)
567
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expand_attr_vars_in_native_stmt</span>(<span class="ruby-identifier">native_stmt</span>, <span class="ruby-identifier">attr_info</span>)
568
+ <span class="ruby-identifier">code</span> = <span class="ruby-identifier">expand_attr_vars</span>(<span class="ruby-identifier">native_stmt</span>.<span class="ruby-identifier">code</span>, <span class="ruby-identifier">attr_info</span>)
569
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">code</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">native_stmt</span>.<span class="ruby-identifier">code</span>
570
+ <span class="ruby-identifier">no_newline</span> = <span class="ruby-identifier">native_stmt</span>.<span class="ruby-identifier">no_newline</span>
571
+ <span class="ruby-identifier">native_stmt</span> = <span class="ruby-constant">NativeStatement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">native_stmt</span>.<span class="ruby-identifier">kind</span>)
572
+ <span class="ruby-identifier">native_stmt</span>.<span class="ruby-identifier">no_newline</span> = <span class="ruby-identifier">no_newline</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">no_newline</span>.<span class="ruby-identifier">nil?</span>
573
+ <span class="ruby-keyword kw">end</span>
574
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">native_stmt</span>
575
+ <span class="ruby-keyword kw">end</span>
576
+ </pre>
577
+ </div>
578
+ </div>
579
+ </div>
580
+
581
+ <div id="method-M000016" class="method-detail">
582
+ <a name="M000016"></a>
583
+
584
+ <div class="method-heading">
585
+ <a href="#M000016" class="method-signature">
586
+ <span class="method-name">stag_stmt</span><span class="method-args">(elem_info)</span>
587
+ </a>
588
+ </div>
589
+
590
+ <div class="method-description">
591
+ <p>
592
+ build print statement of start-tag
593
+ </p>
594
+ <p><a class="source-toggle" href="#"
595
+ onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
596
+ <div class="method-source-code" id="M000016-source">
597
+ <pre>
598
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 392</span>
599
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">elem_info</span>)
600
+ <span class="ruby-identifier">e</span> = <span class="ruby-identifier">elem_info</span>
601
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">build_print_stmt</span>(<span class="ruby-identifier">e</span>.<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">attr_info</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">append_exprs</span>)
602
+ <span class="ruby-keyword kw">end</span>
603
+ </pre>
604
+ </div>
605
+ </div>
606
+ </div>
607
+
608
+ <div id="method-M000020" class="method-detail">
609
+ <a name="M000020"></a>
610
+
611
+ <div class="method-heading">
612
+ <a href="#M000020" class="method-signature">
613
+ <span class="method-name">wrap_content_with_native_stmt</span><span class="method-args">(elem_info, stmt_list, start_code, end_code, kind=nil)</span>
614
+ </a>
615
+ </div>
616
+
617
+ <div class="method-description">
618
+ <p><a class="source-toggle" href="#"
619
+ onclick="toggleCode('M000020-source');return false;">[Source]</a></p>
620
+ <div class="method-source-code" id="M000020-source">
621
+ <pre>
622
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 422</span>
623
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wrap_content_with_native_stmt</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">start_code</span>, <span class="ruby-identifier">end_code</span>, <span class="ruby-identifier">kind</span>=<span class="ruby-keyword kw">nil</span>)
624
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">elem_info</span>)
430
625
  <span class="ruby-identifier">add_native_code</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">start_code</span>, <span class="ruby-identifier">kind</span>)
431
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">handler_arg</span>.<span class="ruby-identifier">cont_stmts</span>)
626
+ <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">cont_stmts</span>)
432
627
  <span class="ruby-identifier">add_native_code</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">end_code</span>, <span class="ruby-identifier">kind</span>)
433
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">handler_arg</span>)
628
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">elem_info</span>)
434
629
  <span class="ruby-keyword kw">end</span>
435
630
  </pre>
436
631
  </div>
437
632
  </div>
438
633
  </div>
439
634
 
440
- <div id="method-M000008" class="method-detail">
441
- <a name="M000008"></a>
635
+ <div id="method-M000019" class="method-detail">
636
+ <a name="M000019"></a>
442
637
 
443
638
  <div class="method-heading">
444
- <a href="#M000008" class="method-signature">
445
- <span class="method-name">wrap_element_with_native_stmt</span><span class="method-args">(stmt_list, handler_arg, start_code, end_code, kind=nil)</span>
639
+ <a href="#M000019" class="method-signature">
640
+ <span class="method-name">wrap_element_with_native_stmt</span><span class="method-args">(elem_info, stmt_list, start_code, end_code, kind=nil)</span>
446
641
  </a>
447
642
  </div>
448
643
 
449
644
  <div class="method-description">
450
645
  <p><a class="source-toggle" href="#"
451
- onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
452
- <div class="method-source-code" id="M000008-source">
646
+ onclick="toggleCode('M000019-source');return false;">[Source]</a></p>
647
+ <div class="method-source-code" id="M000019-source">
453
648
  <pre>
454
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 371</span>
455
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wrap_element_with_native_stmt</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">handler_arg</span>, <span class="ruby-identifier">start_code</span>, <span class="ruby-identifier">end_code</span>, <span class="ruby-identifier">kind</span>=<span class="ruby-keyword kw">nil</span>)
649
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 413</span>
650
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wrap_element_with_native_stmt</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">start_code</span>, <span class="ruby-identifier">end_code</span>, <span class="ruby-identifier">kind</span>=<span class="ruby-keyword kw">nil</span>)
456
651
  <span class="ruby-identifier">add_native_code</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">start_code</span>, <span class="ruby-identifier">kind</span>)
457
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">handler_arg</span>)
458
- <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">handler_arg</span>.<span class="ruby-identifier">cont_stmts</span>)
459
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">handler_arg</span>)
652
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stag_stmt</span>(<span class="ruby-identifier">elem_info</span>)
653
+ <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">cont_stmts</span>)
654
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">etag_stmt</span>(<span class="ruby-identifier">elem_info</span>)
460
655
  <span class="ruby-identifier">add_native_code</span>(<span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">end_code</span>, <span class="ruby-identifier">kind</span>)
461
656
  <span class="ruby-keyword kw">end</span>
462
657
  </pre>