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
@@ -80,7 +80,7 @@
80
80
 
81
81
  <div id="description">
82
82
  <p>
83
- (abstract) handle directives
83
+ (abstract) <a href="Handler.html#M000261">handle</a> directives
84
84
  </p>
85
85
 
86
86
  </div>
@@ -92,16 +92,19 @@
92
92
  <h3 class="section-bar">Methods</h3>
93
93
 
94
94
  <div class="name-list">
95
- <a href="#M000232">directive_format</a>&nbsp;&nbsp;
96
- <a href="#M000230">directive_pattern</a>&nbsp;&nbsp;
97
- <a href="#M000234">extract</a>&nbsp;&nbsp;
98
- <a href="#M000236">get_class</a>&nbsp;&nbsp;
99
- <a href="#M000229">get_element_info</a>&nbsp;&nbsp;
100
- <a href="#M000228">get_element_ruleset</a>&nbsp;&nbsp;
101
- <a href="#M000233">handle</a>&nbsp;&nbsp;
102
- <a href="#M000231">mapping_pattern</a>&nbsp;&nbsp;
103
- <a href="#M000227">new</a>&nbsp;&nbsp;
104
- <a href="#M000235">register_class</a>&nbsp;&nbsp;
95
+ <a href="#M000262">apply_rulesets</a>&nbsp;&nbsp;
96
+ <a href="#M000257">directive_pattern</a>&nbsp;&nbsp;
97
+ <a href="#M000263">extract</a>&nbsp;&nbsp;
98
+ <a href="#M000265">get_class</a>&nbsp;&nbsp;
99
+ <a href="#M000255">get_element_info</a>&nbsp;&nbsp;
100
+ <a href="#M000254">get_ruleset</a>&nbsp;&nbsp;
101
+ <a href="#M000261">handle</a>&nbsp;&nbsp;
102
+ <a href="#M000260">handle_directives</a>&nbsp;&nbsp;
103
+ <a href="#M000258">mapping_pattern</a>&nbsp;&nbsp;
104
+ <a href="#M000253">new</a>&nbsp;&nbsp;
105
+ <a href="#M000259">parse_expr_str</a>&nbsp;&nbsp;
106
+ <a href="#M000264">register_class</a>&nbsp;&nbsp;
107
+ <a href="#M000256">register_element_info</a>&nbsp;&nbsp;
105
108
  </div>
106
109
  </div>
107
110
 
@@ -114,9 +117,9 @@
114
117
 
115
118
  <div id="includes-list">
116
119
  <span class="include-name"><a href="Assertion.html">Assertion</a></span>
117
- <span class="include-name">ConverterHelper</span>
118
- <span class="include-name"><a href="StatementHelper.html">StatementHelper</a></span>
119
- <span class="include-name"><a href="ElementExpander.html">ElementExpander</a></span>
120
+ <span class="include-name">ConvertErrorHelper</span>
121
+ <span class="include-name"><a href="HandlerHelper.html">HandlerHelper</a></span>
122
+ <span class="include-name"><a href="Expander.html">Expander</a></span>
120
123
  </div>
121
124
  </div>
122
125
 
@@ -131,11 +134,6 @@
131
134
 
132
135
  <div class="name-list">
133
136
  <table>
134
- <tr class="top-aligned-row context-row">
135
- <td class="context-item-name">converter</td>
136
- <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
137
- <td class="context-item-desc"></td>
138
- </tr>
139
137
  <tr class="top-aligned-row context-row">
140
138
  <td class="context-item-name">even</td>
141
139
  <td class="context-item-value">&nbsp;[R]&nbsp;</td>
@@ -161,21 +159,21 @@
161
159
  <div id="methods">
162
160
  <h3 class="section-bar">Public Class methods</h3>
163
161
 
164
- <div id="method-M000236" class="method-detail">
165
- <a name="M000236"></a>
162
+ <div id="method-M000265" class="method-detail">
163
+ <a name="M000265"></a>
166
164
 
167
165
  <div class="method-heading">
168
- <a href="#M000236" class="method-signature">
166
+ <a href="#M000265" class="method-signature">
169
167
  <span class="method-name">get_class</span><span class="method-args">(lang)</span>
170
168
  </a>
171
169
  </div>
172
170
 
173
171
  <div class="method-description">
174
172
  <p><a class="source-toggle" href="#"
175
- onclick="toggleCode('M000236-source');return false;">[Source]</a></p>
176
- <div class="method-source-code" id="M000236-source">
173
+ onclick="toggleCode('M000265-source');return false;">[Source]</a></p>
174
+ <div class="method-source-code" id="M000265-source">
177
175
  <pre>
178
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 799</span>
176
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 931</span>
179
177
  <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">get_class</span>(<span class="ruby-identifier">lang</span>)
180
178
  <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@@class_table</span>[<span class="ruby-identifier">lang</span>]
181
179
  <span class="ruby-keyword kw">end</span>
@@ -184,51 +182,49 @@
184
182
  </div>
185
183
  </div>
186
184
 
187
- <div id="method-M000227" class="method-detail">
188
- <a name="M000227"></a>
185
+ <div id="method-M000253" class="method-detail">
186
+ <a name="M000253"></a>
189
187
 
190
188
  <div class="method-heading">
191
- <a href="#M000227" class="method-signature">
192
- <span class="method-name">new</span><span class="method-args">(elem_rulesets=[], properties={})</span>
189
+ <a href="#M000253" class="method-signature">
190
+ <span class="method-name">new</span><span class="method-args">(rulesets=[], properties={})</span>
193
191
  </a>
194
192
  </div>
195
193
 
196
194
  <div class="method-description">
197
195
  <p><a class="source-toggle" href="#"
198
- onclick="toggleCode('M000227-source');return false;">[Source]</a></p>
199
- <div class="method-source-code" id="M000227-source">
196
+ onclick="toggleCode('M000253-source');return false;">[Source]</a></p>
197
+ <div class="method-source-code" id="M000253-source">
200
198
  <pre>
201
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 583</span>
202
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">elem_rulesets</span>=[], <span class="ruby-identifier">properties</span>={})
203
- <span class="ruby-ivar">@elem_rulesets</span> = <span class="ruby-identifier">elem_rulesets</span>
204
- <span class="ruby-comment cmt">#@elem_ruleset_table = elem_rulesets.inject({}) { |table, ruleset| table[ruleset.name] = ruleset; table }</span>
205
- <span class="ruby-ivar">@elem_ruleset_table</span> = {} ; <span class="ruby-identifier">elem_rulesets</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">ruleset</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@elem_ruleset_table</span>[<span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">ruleset</span> }
199
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 629</span>
200
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">rulesets</span>=[], <span class="ruby-identifier">properties</span>={})
201
+ <span class="ruby-ivar">@ruleset_table</span> = {}
202
+ <span class="ruby-identifier">rulesets</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">ruleset</span><span class="ruby-operator">|</span> <span class="ruby-identifier">_register_ruleset</span>(<span class="ruby-identifier">ruleset</span>) }
206
203
  <span class="ruby-ivar">@elem_info_table</span> = {}
207
- <span class="ruby-identifier">include_properties</span>(<span class="ruby-identifier">properties</span>) <span class="ruby-comment cmt"># @delspan and @dattr</span>
208
- <span class="ruby-ivar">@odd</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:odd</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">PROPERTY_ODD</span> <span class="ruby-comment cmt"># &quot;'odd'&quot;</span>
209
- <span class="ruby-ivar">@even</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:even</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">PROPERTY_EVEN</span> <span class="ruby-comment cmt"># &quot;'even'&quot;</span>
210
- <span class="ruby-ivar">@filename</span> = <span class="ruby-keyword kw">nil</span>
204
+ <span class="ruby-ivar">@delspan</span> = <span class="ruby-identifier">properties</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">:delspan</span>, <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">PROPERTY_DELSPAN</span>) <span class="ruby-comment cmt"># delete dummy &lt;span&gt; tag or not</span>
205
+ <span class="ruby-ivar">@odd</span> = <span class="ruby-identifier">properties</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">:odd</span>, <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">PROPERTY_ODD</span>) <span class="ruby-comment cmt"># &quot;'odd'&quot;</span>
206
+ <span class="ruby-ivar">@even</span> = <span class="ruby-identifier">properties</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">:even</span>, <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">PROPERTY_EVEN</span>) <span class="ruby-comment cmt"># &quot;'even'&quot;</span>
211
207
  <span class="ruby-keyword kw">end</span>
212
208
  </pre>
213
209
  </div>
214
210
  </div>
215
211
  </div>
216
212
 
217
- <div id="method-M000235" class="method-detail">
218
- <a name="M000235"></a>
213
+ <div id="method-M000264" class="method-detail">
214
+ <a name="M000264"></a>
219
215
 
220
216
  <div class="method-heading">
221
- <a href="#M000235" class="method-signature">
217
+ <a href="#M000264" class="method-signature">
222
218
  <span class="method-name">register_class</span><span class="method-args">(lang, klass)</span>
223
219
  </a>
224
220
  </div>
225
221
 
226
222
  <div class="method-description">
227
223
  <p><a class="source-toggle" href="#"
228
- onclick="toggleCode('M000235-source');return false;">[Source]</a></p>
229
- <div class="method-source-code" id="M000235-source">
224
+ onclick="toggleCode('M000264-source');return false;">[Source]</a></p>
225
+ <div class="method-source-code" id="M000264-source">
230
226
  <pre>
231
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 794</span>
227
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 926</span>
232
228
  <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">register_class</span>(<span class="ruby-identifier">lang</span>, <span class="ruby-identifier">klass</span>)
233
229
  <span class="ruby-ivar">@@class_table</span>[<span class="ruby-identifier">lang</span>] = <span class="ruby-identifier">klass</span>
234
230
  <span class="ruby-keyword kw">end</span>
@@ -239,21 +235,52 @@
239
235
 
240
236
  <h3 class="section-bar">Public Instance methods</h3>
241
237
 
242
- <div id="method-M000234" class="method-detail">
243
- <a name="M000234"></a>
238
+ <div id="method-M000262" class="method-detail">
239
+ <a name="M000262"></a>
244
240
 
245
241
  <div class="method-heading">
246
- <a href="#M000234" class="method-signature">
242
+ <a href="#M000262" class="method-signature">
243
+ <span class="method-name">apply_rulesets</span><span class="method-args">(elem_info)</span>
244
+ </a>
245
+ </div>
246
+
247
+ <div class="method-description">
248
+ <p><a class="source-toggle" href="#"
249
+ onclick="toggleCode('M000262-source');return false;">[Source]</a></p>
250
+ <div class="method-source-code" id="M000262-source">
251
+ <pre>
252
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 900</span>
253
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">apply_rulesets</span>(<span class="ruby-identifier">elem_info</span>)
254
+ <span class="ruby-identifier">assert</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-operator">!</span><span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">applied</span>
255
+ <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">applied</span> = <span class="ruby-keyword kw">true</span>
256
+ <span class="ruby-identifier">tagname</span> = <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">tagname</span>
257
+ <span class="ruby-identifier">classname</span> = <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">attr_info</span>[<span class="ruby-value str">'class'</span>]
258
+ <span class="ruby-comment cmt">#idname = elem_info.name || elem_info.attr_info['id']</span>
259
+ <span class="ruby-identifier">ruleset</span> = <span class="ruby-keyword kw">nil</span>
260
+ <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">apply</span>(<span class="ruby-identifier">ruleset</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ruleset</span> = <span class="ruby-identifier">get_ruleset</span>(<span class="ruby-identifier">tagname</span>)
261
+ <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">apply</span>(<span class="ruby-identifier">ruleset</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">classname</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">ruleset</span> = <span class="ruby-identifier">get_ruleset</span>(<span class="ruby-value str">'.'</span><span class="ruby-operator">+</span><span class="ruby-identifier">classname</span>))
262
+ <span class="ruby-comment cmt">#elem_info.apply(ruleset) if idname &amp;&amp; (ruleset = get_ruleset('#'+idname))</span>
263
+ <span class="ruby-keyword kw">end</span>
264
+ </pre>
265
+ </div>
266
+ </div>
267
+ </div>
268
+
269
+ <div id="method-M000263" class="method-detail">
270
+ <a name="M000263"></a>
271
+
272
+ <div class="method-heading">
273
+ <a href="#M000263" class="method-signature">
247
274
  <span class="method-name">extract</span><span class="method-args">(elem_name, content_only=false)</span>
248
275
  </a>
249
276
  </div>
250
277
 
251
278
  <div class="method-description">
252
279
  <p><a class="source-toggle" href="#"
253
- onclick="toggleCode('M000234-source');return false;">[Source]</a></p>
254
- <div class="method-source-code" id="M000234-source">
280
+ onclick="toggleCode('M000263-source');return false;">[Source]</a></p>
281
+ <div class="method-source-code" id="M000263-source">
255
282
  <pre>
256
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 781</span>
283
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 913</span>
257
284
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">extract</span>(<span class="ruby-identifier">elem_name</span>, <span class="ruby-identifier">content_only</span>=<span class="ruby-keyword kw">false</span>)
258
285
  <span class="ruby-identifier">elem_info</span> = <span class="ruby-ivar">@elem_info_table</span>[<span class="ruby-identifier">elem_name</span>]
259
286
  <span class="ruby-identifier">elem_info</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;element '#{elem_name}' not found.&quot;</span>, <span class="ruby-keyword kw">nil</span>)
@@ -267,22 +294,22 @@
267
294
  </div>
268
295
  </div>
269
296
 
270
- <div id="method-M000229" class="method-detail">
271
- <a name="M000229"></a>
297
+ <div id="method-M000255" class="method-detail">
298
+ <a name="M000255"></a>
272
299
 
273
300
  <div class="method-heading">
274
- <a href="#M000229" class="method-signature">
301
+ <a href="#M000255" class="method-signature">
275
302
  <span class="method-name">get_element_info</span><span class="method-args">(name)</span>
276
303
  </a>
277
304
  </div>
278
305
 
279
306
  <div class="method-description">
280
307
  <p><a class="source-toggle" href="#"
281
- onclick="toggleCode('M000229-source');return false;">[Source]</a></p>
282
- <div class="method-source-code" id="M000229-source">
308
+ onclick="toggleCode('M000255-source');return false;">[Source]</a></p>
309
+ <div class="method-source-code" id="M000255-source">
283
310
  <pre>
284
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 602</span>
285
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_element_info</span>(<span class="ruby-identifier">name</span>) <span class="ruby-comment cmt"># for ElementExpander module</span>
311
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 655</span>
312
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_element_info</span>(<span class="ruby-identifier">name</span>) <span class="ruby-comment cmt"># for Expander module</span>
286
313
  <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@elem_info_table</span>[<span class="ruby-identifier">name</span>]
287
314
  <span class="ruby-keyword kw">end</span>
288
315
  </pre>
@@ -290,42 +317,43 @@
290
317
  </div>
291
318
  </div>
292
319
 
293
- <div id="method-M000228" class="method-detail">
294
- <a name="M000228"></a>
320
+ <div id="method-M000254" class="method-detail">
321
+ <a name="M000254"></a>
295
322
 
296
323
  <div class="method-heading">
297
- <a href="#M000228" class="method-signature">
298
- <span class="method-name">get_element_ruleset</span><span class="method-args">(name)</span>
324
+ <a href="#M000254" class="method-signature">
325
+ <span class="method-name">get_ruleset</span><span class="method-args">(selector)</span>
299
326
  </a>
300
327
  </div>
301
328
 
302
329
  <div class="method-description">
303
330
  <p><a class="source-toggle" href="#"
304
- onclick="toggleCode('M000228-source');return false;">[Source]</a></p>
305
- <div class="method-source-code" id="M000228-source">
331
+ onclick="toggleCode('M000254-source');return false;">[Source]</a></p>
332
+ <div class="method-source-code" id="M000254-source">
306
333
  <pre>
307
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 597</span>
308
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_element_ruleset</span>(<span class="ruby-identifier">name</span>) <span class="ruby-comment cmt"># for ElementExpander module and Converter class</span>
309
- <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@elem_ruleset_table</span>[<span class="ruby-identifier">name</span>]
334
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 650</span>
335
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_ruleset</span>(<span class="ruby-identifier">selector</span>) <span class="ruby-comment cmt"># for Expander module and Converter class</span>
336
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ruleset_table</span>[<span class="ruby-identifier">selector</span>]
310
337
  <span class="ruby-keyword kw">end</span>
311
338
  </pre>
312
339
  </div>
313
340
  </div>
314
341
  </div>
315
342
 
316
- <div id="method-M000233" class="method-detail">
317
- <a name="M000233"></a>
343
+ <div id="method-M000261" class="method-detail">
344
+ <a name="M000261"></a>
318
345
 
319
346
  <div class="method-heading">
320
- <a href="#M000233" class="method-signature">
321
- <span class="method-name">handle</span><span class="method-args">(stmt_list, handler_arg)</span>
347
+ <a href="#M000261" class="method-signature">
348
+ <span class="method-name">handle</span><span class="method-args">(directive, elem_info, stmt_list)</span>
322
349
  </a>
323
350
  </div>
324
351
 
325
352
  <div class="method-description">
326
353
  <p>
327
- handle directives (&#8216;stag&#8217;, &#8216;etag&#8217;,
328
- &#8216;elem&#8217;, &#8216;cont&#8217;(=&#8217;value&#8217;))
354
+ <a href="Handler.html#M000261">handle</a> directives (&#8216;stag&#8217;,
355
+ &#8216;etag&#8217;, &#8216;elem&#8217;,
356
+ &#8216;cont&#8217;(=&#8217;value&#8217;))
329
357
  </p>
330
358
  <p>
331
359
  return true if directive name is one of &#8216;stag&#8217;,
@@ -333,87 +361,91 @@ return true if directive name is one of &#8216;stag&#8217;,
333
361
  &#8216;value&#8217;, else return false.
334
362
  </p>
335
363
  <p><a class="source-toggle" href="#"
336
- onclick="toggleCode('M000233-source');return false;">[Source]</a></p>
337
- <div class="method-source-code" id="M000233-source">
364
+ onclick="toggleCode('M000261-source');return false;">[Source]</a></p>
365
+ <div class="method-source-code" id="M000261-source">
338
366
  <pre>
339
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 657</span>
340
- <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>)
341
- <span class="ruby-identifier">arg</span> = <span class="ruby-identifier">handler_arg</span>
342
- <span class="ruby-identifier">d_name</span> = <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">directive_name</span>
343
- <span class="ruby-identifier">d_arg</span> = <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">directive_arg</span>
344
- <span class="ruby-identifier">d_str</span> = <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">directive_str</span>
367
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 772</span>
368
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle</span>(<span class="ruby-identifier">directive</span>, <span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>)
369
+ <span class="ruby-identifier">d_name</span> = <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">name</span>
370
+ <span class="ruby-identifier">d_arg</span> = <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">arg</span>
371
+ <span class="ruby-identifier">d_str</span> = <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">str</span>
372
+ <span class="ruby-identifier">d_attr</span> = <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">dattr</span>
373
+ <span class="ruby-identifier">e</span> = <span class="ruby-identifier">elem_info</span>
374
+ <span class="ruby-identifier">linenum</span> = <span class="ruby-identifier">e</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>
345
375
 
346
376
  <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">d_name</span>
347
377
 
348
378
  <span class="ruby-keyword kw">when</span> <span class="ruby-keyword kw">nil</span>
349
- <span class="ruby-identifier">assert</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-operator">!</span><span class="ruby-identifier">arg</span>.<span class="ruby-identifier">attr_info</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">arg</span>.<span class="ruby-identifier">append_exprs</span>.<span class="ruby-identifier">empty?</span>
350
- <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>)
351
- <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>)
352
- <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">arg</span>.<span class="ruby-identifier">etag_info</span> <span class="ruby-comment cmt"># when empty-tag</span>
379
+ <span class="ruby-identifier">assert</span> <span class="ruby-keyword kw">false</span>
353
380
 
354
381
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:dummy</span>
355
382
  <span class="ruby-comment cmt"># nothing</span>
356
383
 
357
384
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:id</span>, <span class="ruby-identifier">:mark</span>
358
- <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(\w+)\z/</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">d_arg</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/\A'(\w+)'\z/</span>
359
- <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': invalid marking name.&quot;</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
385
+ <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([-\w]+)\z/</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">d_arg</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/\A'([-\w]+)'\z/</span>
386
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': invalid marking name.&quot;</span>, <span class="ruby-identifier">linenum</span>)
360
387
  <span class="ruby-keyword kw">end</span>
361
388
  <span class="ruby-identifier">name</span> = <span class="ruby-identifier">$1</span>
362
- <span class="ruby-identifier">elem_info</span> = <span class="ruby-constant">ElementInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">etag_info</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">cont_stmts</span>,
363
- <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>)
364
- <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@elem_info_table</span>[<span class="ruby-identifier">name</span>]
365
- <span class="ruby-comment cmt">#unless Config::ALLOW_DUPLICATE_ID</span>
366
- <span class="ruby-identifier">previous_linenum</span> = <span class="ruby-ivar">@elem_info_table</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>
389
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">get_element_info</span>(<span class="ruby-identifier">name</span>)
390
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">ALLOW_DUPLICATE_ID</span>
391
+ <span class="ruby-identifier">previous_linenum</span> = <span class="ruby-identifier">get_element_info</span>(<span class="ruby-identifier">name</span>).<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>
367
392
  <span class="ruby-identifier">msg</span> = <span class="ruby-node">&quot;'#{d_str}': id '#{name}' is already used at line #{previous_linenum}.&quot;</span>
368
- <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-identifier">msg</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
369
- <span class="ruby-comment cmt">#end</span>
370
- <span class="ruby-keyword kw">else</span>
371
- <span class="ruby-ivar">@elem_info_table</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">elem_info</span>
393
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-identifier">msg</span>, <span class="ruby-identifier">linenum</span>)
394
+ <span class="ruby-keyword kw">end</span>
372
395
  <span class="ruby-keyword kw">end</span>
396
+ <span class="ruby-identifier">ruleset</span> = <span class="ruby-identifier">get_ruleset</span>(<span class="ruby-value str">'#'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">name</span>)
397
+ <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">apply</span>(<span class="ruby-identifier">ruleset</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ruleset</span>
398
+ <span class="ruby-identifier">register_element_info</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">elem_info</span>)
373
399
  <span class="ruby-comment cmt">#stmt_list &lt;&lt; ExpandStatement.new(:element, name) # lazy expantion</span>
374
400
  <span class="ruby-identifier">expand_element_info</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>)
375
401
 
376
402
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:stag</span>, <span class="ruby-identifier">:Stag</span>, <span class="ruby-identifier">:STAG</span>
377
- <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">arg</span>)
403
+ <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">d_str</span>)
378
404
  <span class="ruby-identifier">flag_escape</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:stag</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">:Stag</span>)
379
- <span class="ruby-identifier">expr</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>)
380
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_expr_stmt</span>(<span class="ruby-identifier">expr</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>, <span class="ruby-keyword kw">nil</span>)
381
- <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>)
382
- <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>)
405
+ <span class="ruby-identifier">expr_str</span> = <span class="ruby-identifier">d_attr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'id'</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">parse_expr_str</span>(<span class="ruby-identifier">d_arg</span>, <span class="ruby-identifier">linenum</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">d_arg</span>
406
+ <span class="ruby-identifier">expr</span> = <span class="ruby-constant">NativeExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">expr_str</span>, <span class="ruby-identifier">flag_escape</span>)
407
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_expr_stmt</span>(<span class="ruby-identifier">expr</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">stag_info</span>, <span class="ruby-keyword kw">nil</span>)
408
+ <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">e</span>.<span class="ruby-identifier">cont_stmts</span>)
409
+ <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>)
383
410
 
384
411
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:etag</span>, <span class="ruby-identifier">:Etag</span>, <span class="ruby-identifier">:ETAG</span>
385
- <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">arg</span>)
412
+ <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">d_str</span>)
386
413
  <span class="ruby-identifier">flag_escape</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:etag</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">:Etag</span>)
387
- <span class="ruby-identifier">expr</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>)
388
- <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>)
389
- <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>)
390
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_expr_stmt</span>(<span class="ruby-identifier">expr</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">etag_info</span>)
414
+ <span class="ruby-identifier">expr_str</span> = <span class="ruby-identifier">d_attr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'id'</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">parse_expr_str</span>(<span class="ruby-identifier">d_arg</span>, <span class="ruby-identifier">linenum</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">d_arg</span>
415
+ <span class="ruby-identifier">expr</span> = <span class="ruby-constant">NativeExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">expr_str</span>, <span class="ruby-identifier">flag_escape</span>)
416
+ <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>)
417
+ <span class="ruby-identifier">stmt_list</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">e</span>.<span class="ruby-identifier">cont_stmts</span>)
418
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_expr_stmt</span>(<span class="ruby-identifier">expr</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">etag_info</span>)
391
419
 
392
420
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:elem</span>, <span class="ruby-identifier">:Elem</span>, <span class="ruby-identifier">:ELEM</span>
393
421
  <span class="ruby-identifier">flag_escape</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:elem</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">:Elem</span>)
394
- <span class="ruby-identifier">expr</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>)
395
- <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_expr_stmt</span>(<span class="ruby-identifier">expr</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">etag_info</span>)
422
+ <span class="ruby-identifier">expr_str</span> = <span class="ruby-identifier">d_attr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'id'</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">parse_expr_str</span>(<span class="ruby-identifier">d_arg</span>, <span class="ruby-identifier">linenum</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">d_arg</span>
423
+ <span class="ruby-identifier">expr</span> = <span class="ruby-constant">NativeExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">expr_str</span>, <span class="ruby-identifier">flag_escape</span>)
424
+ <span class="ruby-identifier">stmt_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">build_print_expr_stmt</span>(<span class="ruby-identifier">expr</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">stag_info</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">etag_info</span>)
396
425
 
397
426
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:cont</span>, <span class="ruby-identifier">:Cont</span>, <span class="ruby-identifier">:CONT</span>, <span class="ruby-identifier">:value</span>, <span class="ruby-identifier">:Value</span>, <span class="ruby-identifier">:VALUE</span>
398
- <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">arg</span>)
399
- <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">tail_space</span> = <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">etag_info</span>.<span class="ruby-identifier">head_space</span> = <span class="ruby-keyword kw">nil</span> <span class="ruby-comment cmt"># delete spaces</span>
400
- <span class="ruby-identifier">pargs</span> = <span class="ruby-identifier">build_print_args</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>)
427
+ <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">str</span>)
428
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">tail_space</span> = <span class="ruby-identifier">e</span>.<span class="ruby-identifier">etag_info</span>.<span class="ruby-identifier">head_space</span> = <span class="ruby-keyword kw">nil</span> <span class="ruby-comment cmt"># delete spaces</span>
429
+ <span class="ruby-identifier">pargs</span> = <span class="ruby-identifier">build_print_args</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>)
401
430
  <span class="ruby-identifier">flag_escape</span> = (<span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:cont</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:value</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">:Cont</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:Value</span>)
402
- <span class="ruby-identifier">pargs</span> <span class="ruby-operator">&lt;&lt;</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>)
403
- <span class="ruby-identifier">pargs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">etag_info</span>.<span class="ruby-identifier">tag_text</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">etag_info</span>.<span class="ruby-identifier">tagname</span>
431
+ <span class="ruby-identifier">expr_str</span> = <span class="ruby-identifier">d_attr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'id'</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">parse_expr_str</span>(<span class="ruby-identifier">d_arg</span>, <span class="ruby-identifier">linenum</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">d_arg</span>
432
+ <span class="ruby-identifier">pargs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">expr_str</span>, <span class="ruby-identifier">flag_escape</span>)
433
+ <span class="ruby-identifier">pargs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">etag_info</span>.<span class="ruby-identifier">tag_text</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">etag_info</span>.<span class="ruby-identifier">tagname</span>
404
434
  <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-identifier">pargs</span>)
405
435
 
406
436
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:attr</span>, <span class="ruby-identifier">:Attr</span>, <span class="ruby-identifier">:ATTR</span>
407
437
  <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">d_arg</span> <span class="ruby-operator">=~</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mapping_pattern</span>() <span class="ruby-comment cmt"># ex. /\A'([-:\w]+)'\s+(.*)\z/</span>
408
- <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': invalid attr pattern.&quot;</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
438
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': invalid attr pattern.&quot;</span>, <span class="ruby-identifier">linenum</span>)
409
439
  <span class="ruby-keyword kw">end</span>
410
440
  <span class="ruby-identifier">aname</span> = <span class="ruby-identifier">$1</span>; <span class="ruby-identifier">avalue</span> = <span class="ruby-identifier">$2</span>
411
441
  <span class="ruby-identifier">flag_escape</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:attr</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">:Attr</span>)
412
- <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">attr_info</span>[<span class="ruby-identifier">aname</span>] = <span class="ruby-constant">NativeExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">avalue</span>, <span class="ruby-identifier">flag_escape</span>)
442
+ <span class="ruby-identifier">expr_str</span> = <span class="ruby-identifier">d_attr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'id'</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">parse_expr_str</span>(<span class="ruby-identifier">avalue</span>, <span class="ruby-identifier">linenum</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">avalue</span>
443
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">attr_info</span>[<span class="ruby-identifier">aname</span>] = <span class="ruby-constant">NativeExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">expr_str</span>, <span class="ruby-identifier">flag_escape</span>)
413
444
 
414
445
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:append</span>, <span class="ruby-identifier">:Append</span>, <span class="ruby-identifier">:APPEND</span>
415
446
  <span class="ruby-identifier">flag_escape</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:append</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">:Append</span>)
416
- <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">append_exprs</span> <span class="ruby-operator">&lt;&lt;</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>)
447
+ <span class="ruby-identifier">expr_str</span> = <span class="ruby-identifier">d_attr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'id'</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">parse_expr_str</span>(<span class="ruby-identifier">d_arg</span>, <span class="ruby-identifier">linenum</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">d_arg</span>
448
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">append_exprs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">NativeExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">expr_str</span>, <span class="ruby-identifier">flag_escape</span>)
417
449
 
418
450
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:replace_element_with_element</span>, <span class="ruby-identifier">:replace_element_with_content</span>,
419
451
  <span class="ruby-identifier">:replace_content_with_element</span>, <span class="ruby-identifier">:replace_content_with_content</span>
@@ -422,35 +454,35 @@ return true if directive name is one of &#8216;stag&#8217;,
422
454
  <span class="ruby-identifier">with_content</span> = <span class="ruby-identifier">arr</span>[<span class="ruby-value">3</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'content'</span>
423
455
  <span class="ruby-identifier">name</span> = <span class="ruby-identifier">d_arg</span>
424
456
  <span class="ruby-comment cmt">#</span>
425
- <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">replace_cont</span>
426
- <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">replace_cont</span>
457
+ <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">d_str</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">replace_cont</span>
458
+ <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">replace_cont</span>
427
459
  <span class="ruby-comment cmt">#stmt_list &lt;&lt; ExpandStatement.new(:element, name)</span>
428
- <span class="ruby-identifier">elem_info</span> = <span class="ruby-ivar">@elem_info_table</span>[<span class="ruby-identifier">name</span>]
460
+ <span class="ruby-identifier">elem_info2</span> = <span class="ruby-ivar">@elem_info_table</span>[<span class="ruby-identifier">name</span>]
429
461
  <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">elem_info</span>
430
- <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': element '#{name}' not found.&quot;</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
462
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': element '#{name}' not found.&quot;</span>, <span class="ruby-identifier">linenum</span>)
431
463
  <span class="ruby-keyword kw">end</span>
432
- <span class="ruby-identifier">expand_element_info</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">with_content</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">arg</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">replace_cont</span>
464
+ <span class="ruby-identifier">expand_element_info</span>(<span class="ruby-identifier">elem_info2</span>, <span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">with_content</span>)
465
+ <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">replace_cont</span>
434
466
 
435
467
  <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:replace_element_with</span>, <span class="ruby-identifier">:replace_content_with</span>, <span class="ruby-identifier">:replace</span>, <span class="ruby-identifier">:placeholder</span>
436
468
  <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_?(element|content)\([&quot;']?(\w+)[&quot;']?\)\z/</span>
437
- <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': invalid #{d_name} format.&quot;</span>, <span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
469
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': invalid #{d_name} format.&quot;</span>, <span class="ruby-identifier">linenum</span>)
438
470
  <span class="ruby-keyword kw">end</span>
439
471
  <span class="ruby-identifier">kind</span> = <span class="ruby-identifier">$1</span>
440
472
  <span class="ruby-identifier">name</span> = <span class="ruby-identifier">$2</span>
441
473
  <span class="ruby-identifier">replace_cont</span> = <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:replace_content_with</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">d_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:placeholder</span>
442
474
  <span class="ruby-identifier">with_content</span> = <span class="ruby-identifier">kind</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'content'</span>
443
475
  <span class="ruby-comment cmt">#</span>
444
- <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">arg</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">replace_cont</span>
445
- <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">replace_cont</span>
476
+ <span class="ruby-identifier">error_if_empty_tag</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">d_str</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">replace_cont</span>
477
+ <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">replace_cont</span>
446
478
  <span class="ruby-comment cmt">#stmt_list &lt;&lt; ExpandStatement.new(:element, name)</span>
447
- <span class="ruby-identifier">elem_info</span> = <span class="ruby-ivar">@elem_info_table</span>[<span class="ruby-identifier">name</span>]
448
- <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">elem_info</span>
479
+ <span class="ruby-identifier">elem_info2</span> = <span class="ruby-ivar">@elem_info_table</span>[<span class="ruby-identifier">name</span>]
480
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">elem_info2</span>
449
481
  <span class="ruby-identifier">msg</span> = <span class="ruby-node">&quot;'#{d_str}': element '#{name}' not found.&quot;</span>
450
- <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-identifier">msg</span>, <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>)
482
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-identifier">msg</span>, <span class="ruby-identifier">linenum</span>)
451
483
  <span class="ruby-keyword kw">end</span>
452
- <span class="ruby-identifier">expand_element_info</span>(<span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">with_content</span>)
453
- <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">replace_cont</span>
484
+ <span class="ruby-identifier">expand_element_info</span>(<span class="ruby-identifier">elem_info2</span>, <span class="ruby-identifier">stmt_list</span>, <span class="ruby-identifier">with_content</span>)
485
+ <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">replace_cont</span>
454
486
 
455
487
  <span class="ruby-keyword kw">else</span>
456
488
  <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
@@ -464,40 +496,112 @@ return true if directive name is one of &#8216;stag&#8217;,
464
496
  </div>
465
497
  </div>
466
498
 
467
- <h3 class="section-bar">Protected Instance methods</h3>
499
+ <div id="method-M000260" class="method-detail">
500
+ <a name="M000260"></a>
501
+
502
+ <div class="method-heading">
503
+ <a href="#M000260" class="method-signature">
504
+ <span class="method-name">handle_directives</span><span class="method-args">(directive, elem_info, stmt_list)</span>
505
+ </a>
506
+ </div>
507
+
508
+ <div class="method-description">
509
+ <p><a class="source-toggle" href="#"
510
+ onclick="toggleCode('M000260-source');return false;">[Source]</a></p>
511
+ <div class="method-source-code" id="M000260-source">
512
+ <pre>
513
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 710</span>
514
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_directives</span>(<span class="ruby-identifier">directive</span>, <span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>)
515
+ <span class="ruby-identifier">e</span> = <span class="ruby-identifier">elem_info</span>
516
+ <span class="ruby-identifier">linenum</span> = <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">linenum</span>
517
+ <span class="ruby-identifier">append_exprs</span> = <span class="ruby-keyword kw">nil</span>
518
+
519
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">dattr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'id'</span>
520
+ <span class="ruby-comment cmt">## nothing</span>
521
+ <span class="ruby-keyword kw">else</span>
522
+ <span class="ruby-comment cmt">## handle 'attr:' and 'append:' directives</span>
523
+ <span class="ruby-identifier">d_str</span> = <span class="ruby-keyword kw">nil</span>
524
+ <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">str</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">/;/</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">d_str</span><span class="ruby-operator">|</span>
525
+ <span class="ruby-identifier">d_str</span>.<span class="ruby-identifier">strip!</span>
526
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">d_str</span> <span class="ruby-operator">=~</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">directive_pattern</span> <span class="ruby-comment cmt"># ex. /\A(\w+):\s*(.*)\z/</span>
527
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': invalid directive pattern&quot;</span>, <span class="ruby-identifier">linenum</span>)
528
+ <span class="ruby-keyword kw">end</span>
529
+ <span class="ruby-identifier">d_name</span> = <span class="ruby-identifier">$1</span>.<span class="ruby-identifier">intern</span> <span class="ruby-comment cmt"># directive name</span>
530
+ <span class="ruby-identifier">d_arg</span> = <span class="ruby-identifier">$2</span> <span class="ruby-operator">||</span> <span class="ruby-value str">''</span> <span class="ruby-comment cmt"># directive arg</span>
531
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">d_name</span>
532
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:attr</span>, <span class="ruby-identifier">:Attr</span>, <span class="ruby-identifier">:ATTR</span>
533
+ <span class="ruby-identifier">directive2</span> = <span class="ruby-constant">Directive</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:name=</span><span class="ruby-operator">&gt;</span><span class="ruby-identifier">d_name</span>, <span class="ruby-identifier">:arg=</span><span class="ruby-operator">&gt;</span><span class="ruby-identifier">d_arg</span>, <span class="ruby-identifier">:sr=</span><span class="ruby-operator">&gt;</span><span class="ruby-identifier">d_str</span>)
534
+ <span class="ruby-identifier">handle</span>(<span class="ruby-identifier">directive2</span>, <span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>)
535
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:append</span>, <span class="ruby-identifier">:Append</span>, <span class="ruby-identifier">:APPEND</span>
536
+ <span class="ruby-identifier">append_exprs</span> <span class="ruby-operator">||=</span> []
537
+ <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">append_exprs</span> = <span class="ruby-identifier">append_exprs</span>
538
+ <span class="ruby-identifier">directive2</span> = <span class="ruby-constant">Directive</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:name=</span><span class="ruby-operator">&gt;</span><span class="ruby-identifier">d_name</span>, <span class="ruby-identifier">:arg=</span><span class="ruby-operator">&gt;</span><span class="ruby-identifier">d_arg</span>, <span class="ruby-identifier">:sr=</span><span class="ruby-operator">&gt;</span><span class="ruby-identifier">d_str</span>)
539
+ <span class="ruby-identifier">handle</span>(<span class="ruby-identifier">directive2</span>, <span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>)
540
+ <span class="ruby-keyword kw">else</span>
541
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">name</span>
542
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{d_str}': not available with '#{directive.name}' directive.&quot;</span>, <span class="ruby-identifier">linenum</span>)
543
+ <span class="ruby-keyword kw">end</span>
544
+ <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">name</span> = <span class="ruby-identifier">d_name</span>
545
+ <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">arg</span> = <span class="ruby-identifier">d_arg</span>
546
+ <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">str</span> = <span class="ruby-identifier">d_str</span>
547
+ <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#case</span>
548
+ <span class="ruby-keyword kw">end</span>
549
+ <span class="ruby-keyword kw">end</span>
550
+
551
+ <span class="ruby-comment cmt">## remove dummy &lt;span&gt; tag</span>
552
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@delspan</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">dummy_span_tag?</span>(<span class="ruby-value str">'span'</span>)
553
+ <span class="ruby-comment cmt">#e.stag_info.tagname = e.etag_info.tagname = nil</span>
554
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">stag_info</span>.<span class="ruby-identifier">clear_as_dummy_tag</span>()
555
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">etag_info</span>.<span class="ruby-identifier">clear_as_dummy_tag</span>()
556
+ <span class="ruby-keyword kw">end</span>
557
+
558
+ <span class="ruby-comment cmt">## handle other directives</span>
559
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">directive</span>.<span class="ruby-identifier">name</span>
560
+ <span class="ruby-identifier">handled</span> = <span class="ruby-identifier">handle</span>(<span class="ruby-identifier">directive</span>, <span class="ruby-identifier">elem_info</span>, <span class="ruby-identifier">stmt_list</span>)
561
+ <span class="ruby-identifier">handled</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">raise</span> <span class="ruby-identifier">convert_error</span>(<span class="ruby-node">&quot;'#{directive.str}': unknown directive.&quot;</span>, <span class="ruby-identifier">linenum</span>)
562
+ <span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt"># for 'attr' and 'append' directive</span>
563
+ <span class="ruby-identifier">assert</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-operator">!</span><span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">attr_info</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">elem_info</span>.<span class="ruby-identifier">append_exprs</span>.<span class="ruby-identifier">empty?</span>
564
+ <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>)
565
+ <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>)
566
+ <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">elem_info</span>.<span class="ruby-identifier">etag_info</span> <span class="ruby-comment cmt"># when empty-tag</span>
567
+ <span class="ruby-keyword kw">end</span>
568
+
569
+ <span class="ruby-keyword kw">end</span>
570
+ </pre>
571
+ </div>
572
+ </div>
573
+ </div>
468
574
 
469
- <div id="method-M000232" class="method-detail">
470
- <a name="M000232"></a>
575
+ <div id="method-M000256" class="method-detail">
576
+ <a name="M000256"></a>
471
577
 
472
578
  <div class="method-heading">
473
- <a href="#M000232" class="method-signature">
474
- <span class="method-name">directive_format</span><span class="method-args">()</span>
579
+ <a href="#M000256" class="method-signature">
580
+ <span class="method-name">register_element_info</span><span class="method-args">(name, elem_info)</span>
475
581
  </a>
476
582
  </div>
477
583
 
478
584
  <div class="method-description">
479
- <p>
480
- (abstract) directive format, which is used at has_directive?() method
481
- </p>
482
585
  <p><a class="source-toggle" href="#"
483
- onclick="toggleCode('M000232-source');return false;">[Source]</a></p>
484
- <div class="method-source-code" id="M000232-source">
586
+ onclick="toggleCode('M000256-source');return false;">[Source]</a></p>
587
+ <div class="method-source-code" id="M000256-source">
485
588
  <pre>
486
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 644</span>
487
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">directive_format</span>
488
- <span class="ruby-identifier">not_implemented</span>
489
- <span class="ruby-comment cmt">#return '%s: %s'</span>
589
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 660</span>
590
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">register_element_info</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">elem_info</span>)
591
+ <span class="ruby-ivar">@elem_info_table</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">elem_info</span>
490
592
  <span class="ruby-keyword kw">end</span>
491
593
  </pre>
492
594
  </div>
493
595
  </div>
494
596
  </div>
495
597
 
496
- <div id="method-M000230" class="method-detail">
497
- <a name="M000230"></a>
598
+ <h3 class="section-bar">Protected Instance methods</h3>
599
+
600
+ <div id="method-M000257" class="method-detail">
601
+ <a name="M000257"></a>
498
602
 
499
603
  <div class="method-heading">
500
- <a href="#M000230" class="method-signature">
604
+ <a href="#M000257" class="method-signature">
501
605
  <span class="method-name">directive_pattern</span><span class="method-args">()</span>
502
606
  </a>
503
607
  </div>
@@ -507,10 +611,10 @@ return true if directive name is one of &#8216;stag&#8217;,
507
611
  (abstract) directive pattern, which is used to detect directives.
508
612
  </p>
509
613
  <p><a class="source-toggle" href="#"
510
- onclick="toggleCode('M000230-source');return false;">[Source]</a></p>
511
- <div class="method-source-code" id="M000230-source">
614
+ onclick="toggleCode('M000257-source');return false;">[Source]</a></p>
615
+ <div class="method-source-code" id="M000257-source">
512
616
  <pre>
513
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 630</span>
617
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 688</span>
514
618
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">directive_pattern</span>
515
619
  <span class="ruby-identifier">not_implemented</span>
516
620
  <span class="ruby-comment cmt">#return /\A(\w+):\s*(.*)/</span>
@@ -520,11 +624,11 @@ return true if directive name is one of &#8216;stag&#8217;,
520
624
  </div>
521
625
  </div>
522
626
 
523
- <div id="method-M000231" class="method-detail">
524
- <a name="M000231"></a>
627
+ <div id="method-M000258" class="method-detail">
628
+ <a name="M000258"></a>
525
629
 
526
630
  <div class="method-heading">
527
- <a href="#M000231" class="method-signature">
631
+ <a href="#M000258" class="method-signature">
528
632
  <span class="method-name">mapping_pattern</span><span class="method-args">()</span>
529
633
  </a>
530
634
  </div>
@@ -535,10 +639,10 @@ return true if directive name is one of &#8216;stag&#8217;,
535
639
  directive.
536
640
  </p>
537
641
  <p><a class="source-toggle" href="#"
538
- onclick="toggleCode('M000231-source');return false;">[Source]</a></p>
539
- <div class="method-source-code" id="M000231-source">
642
+ onclick="toggleCode('M000258-source');return false;">[Source]</a></p>
643
+ <div class="method-source-code" id="M000258-source">
540
644
  <pre>
541
- <span class="ruby-comment cmt"># File kwartz/converter.rb, line 637</span>
645
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 695</span>
542
646
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mapping_pattern</span>
543
647
  <span class="ruby-identifier">not_implemented</span>
544
648
  <span class="ruby-comment cmt">#return /\A'([-:\w]+)'\s+(.*)/</span>
@@ -548,6 +652,32 @@ directive.
548
652
  </div>
549
653
  </div>
550
654
 
655
+ <div id="method-M000259" class="method-detail">
656
+ <a name="M000259"></a>
657
+
658
+ <div class="method-heading">
659
+ <a href="#M000259" class="method-signature">
660
+ <span class="method-name">parse_expr_str</span><span class="method-args">(expr_str, linenum)</span>
661
+ </a>
662
+ </div>
663
+
664
+ <div class="method-description">
665
+ <p>
666
+ (abstract) convert universal expression string to native expression string
667
+ </p>
668
+ <p><a class="source-toggle" href="#"
669
+ onclick="toggleCode('M000259-source');return false;">[Source]</a></p>
670
+ <div class="method-source-code" id="M000259-source">
671
+ <pre>
672
+ <span class="ruby-comment cmt"># File kwartz/converter.rb, line 702</span>
673
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_expr_str</span>(<span class="ruby-identifier">expr_str</span>, <span class="ruby-identifier">linenum</span>)
674
+ <span class="ruby-identifier">not_implemented</span>
675
+ <span class="ruby-keyword kw">end</span>
676
+ </pre>
677
+ </div>
678
+ </div>
679
+ </div>
680
+
551
681
 
552
682
  </div>
553
683