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.
- data/CHANGES +444 -0
- data/README.txt +4 -1
- data/bin/kwartz +2 -2
- data/doc-api/classes/Kwartz.html +16 -7
- data/doc-api/classes/Kwartz/Assertion.html +6 -6
- data/doc-api/classes/Kwartz/AssertionError.html +6 -6
- data/doc-api/classes/Kwartz/AttrInfo.html +71 -61
- data/doc-api/classes/Kwartz/BaseError.html +12 -12
- data/doc-api/classes/Kwartz/BaseTranslator.html +104 -74
- data/doc-api/classes/Kwartz/CharacterType.html +24 -24
- data/doc-api/classes/Kwartz/CommandOptionError.html +7 -7
- data/doc-api/classes/Kwartz/CommandOptions.html +50 -50
- data/doc-api/classes/Kwartz/Config.html +5 -0
- data/doc-api/classes/Kwartz/ConvertError.html +12 -12
- data/doc-api/classes/Kwartz/Converter.html +31 -33
- data/doc-api/classes/Kwartz/CssStyleParser.html +207 -168
- data/doc-api/classes/Kwartz/Defun.html +32 -31
- data/doc-api/classes/Kwartz/{HandlerArgument.html → Directive.html} +27 -53
- data/doc-api/classes/Kwartz/ElementInfo.html +68 -53
- data/doc-api/classes/Kwartz/EperlExpressionParser.html +185 -0
- data/doc-api/classes/Kwartz/EperlHandler.html +65 -58
- data/doc-api/classes/Kwartz/EperlTranslator.html +14 -7
- data/doc-api/classes/Kwartz/ErubisTranslator.html +14 -7
- data/doc-api/classes/Kwartz/ErubyTranslator.html +14 -7
- data/doc-api/classes/Kwartz/ExpandStatement.html +20 -20
- data/doc-api/classes/Kwartz/Expander.html +358 -0
- data/doc-api/classes/Kwartz/Handler.html +287 -157
- data/doc-api/classes/Kwartz/{StatementHelper.html → HandlerHelper.html} +307 -112
- data/doc-api/classes/Kwartz/Helper/ActionViewHelper.html +23 -23
- data/doc-api/classes/Kwartz/Helper/RailsTemplate.html +96 -96
- data/doc-api/classes/Kwartz/JstlExpressionParser.html +181 -0
- data/doc-api/classes/Kwartz/JstlHandler.html +134 -126
- data/doc-api/classes/Kwartz/JstlTranslator.html +21 -14
- data/doc-api/classes/Kwartz/KwartzError.html +6 -6
- data/doc-api/classes/Kwartz/Main.html +4 -4
- data/doc-api/classes/Kwartz/NativeExpression.html +19 -19
- data/doc-api/classes/Kwartz/NativeStatement.html +24 -24
- data/doc-api/classes/Kwartz/Node.html +7 -7
- data/doc-api/classes/Kwartz/PIErubisTranslator.html +21 -14
- data/doc-api/classes/Kwartz/ParseError.html +6 -6
- data/doc-api/classes/Kwartz/PerlExpressionParser.html +185 -0
- data/doc-api/classes/Kwartz/PerlHandler.html +353 -0
- data/doc-api/classes/Kwartz/PerlTranslator.html +226 -0
- data/doc-api/classes/Kwartz/PhpExpressionParser.html +185 -0
- data/doc-api/classes/Kwartz/PhpHandler.html +63 -56
- data/doc-api/classes/Kwartz/PhpTranslator.html +21 -14
- data/doc-api/classes/Kwartz/PresentationLogicParser.html +126 -123
- data/doc-api/classes/Kwartz/PrintStatement.html +18 -18
- data/doc-api/classes/Kwartz/RailsHandler.html +84 -85
- data/doc-api/classes/Kwartz/RailsTranslator.html +13 -6
- data/doc-api/classes/Kwartz/RubyExpressionParser.html +180 -0
- data/doc-api/classes/Kwartz/RubyHandler.html +73 -69
- data/doc-api/classes/Kwartz/RubyStyleParser.html +86 -86
- data/doc-api/classes/Kwartz/RubyTranslator.html +28 -21
- data/doc-api/classes/Kwartz/Ruleset.html +622 -1
- data/doc-api/classes/Kwartz/StrutsTranslator.html +14 -14
- data/doc-api/classes/Kwartz/TagInfo.html +52 -27
- data/doc-api/classes/Kwartz/TextConverter.html +75 -37
- data/doc-api/classes/Kwartz/Translator.html +54 -53
- data/doc-api/classes/Kwartz/Util.html +25 -25
- data/doc-api/created.rid +1 -1
- data/doc-api/files/__/README_txt.html +7 -2
- data/doc-api/files/kwartz/assert_rb.html +2 -2
- data/doc-api/files/kwartz/binding/eperl_rb.html +2 -2
- data/doc-api/files/kwartz/binding/erubis_rb.html +2 -2
- data/doc-api/files/kwartz/binding/eruby_rb.html +2 -2
- data/doc-api/files/kwartz/binding/jstl_rb.html +2 -2
- data/doc-api/files/kwartz/binding/perl_rb.html +115 -0
- data/doc-api/files/kwartz/binding/php_rb.html +2 -2
- data/doc-api/files/kwartz/binding/pierubis_rb.html +2 -2
- data/doc-api/files/kwartz/binding/rails_rb.html +2 -2
- data/doc-api/files/kwartz/binding/ruby_rb.html +2 -2
- data/doc-api/files/kwartz/binding/struts_rb.html +2 -2
- data/doc-api/files/kwartz/config_rb.html +2 -2
- data/doc-api/files/kwartz/converter_rb.html +2 -2
- data/doc-api/files/kwartz/defun_rb.html +2 -2
- data/doc-api/files/kwartz/error_rb.html +2 -2
- data/doc-api/files/kwartz/helper/rails_rb.html +2 -2
- data/doc-api/files/kwartz/main_rb.html +3 -2
- data/doc-api/files/kwartz/node_rb.html +2 -2
- data/doc-api/files/kwartz/parser_rb.html +2 -2
- data/doc-api/files/kwartz/translator_rb.html +2 -2
- data/doc-api/files/kwartz/util/assert-text-equal_rb.html +2 -2
- data/doc-api/files/kwartz/util/testcase-helper_rb.html +2 -2
- data/doc-api/files/kwartz/util_rb.html +2 -2
- data/doc-api/files/kwartz_rb.html +2 -2
- data/doc-api/fr_class_index.html +10 -5
- data/doc-api/fr_file_index.html +1 -0
- data/doc-api/fr_method_index.html +268 -239
- data/doc/docstyle.css +9 -3
- data/doc/img/fig05.png +0 -0
- data/doc/introduction-to-kwartz.html +3040 -0
- data/doc/pattern-catalog.html +5 -3
- data/doc/reference.html +680 -26
- data/doc/users-guide.html +222 -67
- data/kwartz.gemspec +4 -4
- data/lib/kwartz.rb +3 -3
- data/lib/kwartz/assert.rb +2 -2
- data/lib/kwartz/binding/eperl.rb +71 -31
- data/lib/kwartz/binding/erubis.rb +3 -2
- data/lib/kwartz/binding/eruby.rb +3 -2
- data/lib/kwartz/binding/jstl.rb +66 -29
- data/lib/kwartz/binding/perl.rb +230 -0
- data/lib/kwartz/binding/php.rb +69 -29
- data/lib/kwartz/binding/pierubis.rb +3 -2
- data/lib/kwartz/binding/rails.rb +18 -18
- data/lib/kwartz/binding/ruby.rb +74 -42
- data/lib/kwartz/binding/struts.rb +22 -21
- data/lib/kwartz/config.rb +4 -4
- data/lib/kwartz/converter.rb +465 -345
- data/lib/kwartz/defun.rb +2 -2
- data/lib/kwartz/error.rb +2 -2
- data/lib/kwartz/helper/rails.rb +2 -2
- data/lib/kwartz/main.rb +5 -4
- data/lib/kwartz/node.rb +92 -144
- data/lib/kwartz/parser.rb +112 -103
- data/lib/kwartz/translator.rb +14 -6
- data/lib/kwartz/util.rb +2 -2
- data/lib/kwartz/util/assert-text-equal.rb +2 -2
- data/lib/kwartz/util/testcase-helper.rb +1 -1
- data/test/test-compile.rb +2 -2
- data/test/test-compile.yaml +81 -0
- data/test/test-converter.rb +4 -8
- data/test/test-converter.yaml +152 -3
- data/test/test-directives.rb +2 -2
- data/test/test-directives.yaml +222 -0
- data/test/test-main.rb +6 -4
- data/test/test-main.yaml +66 -1
- data/test/test-parser.rb +12 -3
- data/test/test-parser.yaml +64 -51
- data/test/test-rails.rb +2 -2
- data/test/test-ruleset.rb +2 -2
- data/test/test-ruleset.yaml +465 -4
- data/test/test.log +6 -0
- data/test/test.rb +2 -2
- metadata +116 -106
- data/ChangeLog +0 -156
- data/doc-api/classes/Kwartz/DocumentRuleset.html +0 -369
- data/doc-api/classes/Kwartz/ElementExpander.html +0 -325
- data/doc-api/classes/Kwartz/ElementRuleset.html +0 -612
@@ -88,8 +88,8 @@ css style presentation logic parser
|
|
88
88
|
example of presentation logic in css style:
|
89
89
|
</p>
|
90
90
|
<pre>
|
91
|
-
|
92
|
-
#
|
91
|
+
/* comment */
|
92
|
+
#idname, .classname, tagname {
|
93
93
|
value: @var;
|
94
94
|
attrs: "class" @classname, "bgcolro" color;
|
95
95
|
append: @value==item['list'] ? ' checked' : '';
|
@@ -112,13 +112,14 @@ example of presentation logic in css style:
|
|
112
112
|
<h3 class="section-bar">Methods</h3>
|
113
113
|
|
114
114
|
<div class="name-list">
|
115
|
-
<a href="#
|
116
|
-
<a href="#
|
117
|
-
<a href="#
|
118
|
-
<a href="#
|
119
|
-
<a href="#
|
120
|
-
<a href="#
|
121
|
-
<a href="#
|
115
|
+
<a href="#M000091">has_colon?</a>
|
116
|
+
<a href="#M000090">keywords</a>
|
117
|
+
<a href="#M000087">new</a>
|
118
|
+
<a href="#M000088">parse</a>
|
119
|
+
<a href="#M000093">parse_declaration</a>
|
120
|
+
<a href="#M000094">parse_import_command</a>
|
121
|
+
<a href="#M000092">parse_selectors</a>
|
122
|
+
<a href="#M000089">scan_hook</a>
|
122
123
|
</div>
|
123
124
|
</div>
|
124
125
|
|
@@ -146,54 +147,103 @@ example of presentation logic in css style:
|
|
146
147
|
|
147
148
|
|
148
149
|
|
150
|
+
<div id="attribute-list">
|
151
|
+
<h3 class="section-bar">Attributes</h3>
|
152
|
+
|
153
|
+
<div class="name-list">
|
154
|
+
<table>
|
155
|
+
<tr class="top-aligned-row context-row">
|
156
|
+
<td class="context-item-name">mode</td>
|
157
|
+
<td class="context-item-value"> [RW] </td>
|
158
|
+
<td class="context-item-desc"></td>
|
159
|
+
</tr>
|
160
|
+
</table>
|
161
|
+
</div>
|
162
|
+
</div>
|
149
163
|
|
150
164
|
|
151
165
|
|
152
166
|
<!-- if method_list -->
|
153
167
|
<div id="methods">
|
168
|
+
<h3 class="section-bar">Public Class methods</h3>
|
169
|
+
|
170
|
+
<div id="method-M000087" class="method-detail">
|
171
|
+
<a name="M000087"></a>
|
172
|
+
|
173
|
+
<div class="method-heading">
|
174
|
+
<a href="#M000087" class="method-signature">
|
175
|
+
<span class="method-name">new</span><span class="method-args">(*args)</span>
|
176
|
+
</a>
|
177
|
+
</div>
|
178
|
+
|
179
|
+
<div class="method-description">
|
180
|
+
<p><a class="source-toggle" href="#"
|
181
|
+
onclick="toggleCode('M000087-source');return false;">[Source]</a></p>
|
182
|
+
<div class="method-source-code" id="M000087-source">
|
183
|
+
<pre>
|
184
|
+
<span class="ruby-comment cmt"># File kwartz/parser.rb, line 605</span>
|
185
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
|
186
|
+
<span class="ruby-keyword kw">super</span>
|
187
|
+
<span class="ruby-ivar">@mode</span> = <span class="ruby-identifier">:selector</span> <span class="ruby-comment cmt"># :selector or :declaration</span>
|
188
|
+
<span class="ruby-keyword kw">end</span>
|
189
|
+
</pre>
|
190
|
+
</div>
|
191
|
+
</div>
|
192
|
+
</div>
|
193
|
+
|
154
194
|
<h3 class="section-bar">Public Instance methods</h3>
|
155
195
|
|
156
|
-
<div id="method-
|
157
|
-
<a name="
|
196
|
+
<div id="method-M000088" class="method-detail">
|
197
|
+
<a name="M000088"></a>
|
158
198
|
|
159
199
|
<div class="method-heading">
|
160
|
-
<a href="#
|
200
|
+
<a href="#M000088" class="method-signature">
|
161
201
|
<span class="method-name">parse</span><span class="method-args">(input, filename='')</span>
|
162
202
|
</a>
|
163
203
|
</div>
|
164
204
|
|
165
205
|
<div class="method-description">
|
166
206
|
<p><a class="source-toggle" href="#"
|
167
|
-
onclick="toggleCode('
|
168
|
-
<div class="method-source-code" id="
|
207
|
+
onclick="toggleCode('M000088-source');return false;">[Source]</a></p>
|
208
|
+
<div class="method-source-code" id="M000088-source">
|
169
209
|
<pre>
|
170
|
-
<span class="ruby-comment cmt"># File kwartz/parser.rb, line
|
210
|
+
<span class="ruby-comment cmt"># File kwartz/parser.rb, line 613</span>
|
171
211
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse</span>(<span class="ruby-identifier">input</span>, <span class="ruby-identifier">filename</span>=<span class="ruby-value str">''</span>)
|
172
212
|
<span class="ruby-identifier">reset</span>(<span class="ruby-identifier">input</span>, <span class="ruby-identifier">filename</span>)
|
173
213
|
<span class="ruby-identifier">scan</span>()
|
174
214
|
<span class="ruby-identifier">rulesets</span> = []
|
175
|
-
<span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-
|
176
|
-
<span class="ruby-identifier">
|
177
|
-
<span class="ruby-identifier">
|
178
|
-
<span class="ruby-
|
179
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'import'</span>
|
215
|
+
<span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:command</span> <span class="ruby-comment cmt"># '@import'</span>
|
216
|
+
<span class="ruby-identifier">command</span> = <span class="ruby-ivar">@value</span>
|
217
|
+
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">command</span>
|
218
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'@import'</span>
|
180
219
|
<span class="ruby-identifier">imported_rulesets</span> = <span class="ruby-identifier">parse_import_command</span>()
|
181
220
|
<span class="ruby-identifier">rulesets</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">imported_rulesets</span>
|
221
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'@from'</span>
|
222
|
+
<span class="ruby-comment cmt"># TODO</span>
|
223
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'@import_pdata'</span>
|
224
|
+
<span class="ruby-comment cmt"># TODO</span>
|
182
225
|
<span class="ruby-keyword kw">else</span>
|
183
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"
|
226
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"#{command}: unsupported command."</span>)
|
184
227
|
<span class="ruby-keyword kw">end</span>
|
185
228
|
<span class="ruby-keyword kw">end</span>
|
186
|
-
<span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-
|
187
|
-
<span class="ruby-identifier">
|
188
|
-
<span class="ruby-
|
189
|
-
|
190
|
-
|
191
|
-
<span class="ruby-
|
192
|
-
|
229
|
+
<span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:selector</span>
|
230
|
+
<span class="ruby-identifier">selectors</span> = <span class="ruby-identifier">parse_selectors</span>()
|
231
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'{'</span><span class="ruby-value str">'{'</span>
|
232
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}': '{' is expected."</span>) <span class="ruby-comment cmt">#'</span>
|
233
|
+
<span class="ruby-keyword kw">end</span>
|
234
|
+
<span class="ruby-ivar">@mode</span> = <span class="ruby-identifier">:declaration</span>
|
235
|
+
<span class="ruby-identifier">_linenum</span>, <span class="ruby-identifier">_column</span> = <span class="ruby-ivar">@linenum</span>, <span class="ruby-ivar">@column</span>
|
236
|
+
<span class="ruby-identifier">ruleset</span> = <span class="ruby-constant">Ruleset</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">selectors</span>)
|
237
|
+
<span class="ruby-identifier">parse_declaration</span>(<span class="ruby-identifier">ruleset</span>)
|
238
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span>
|
239
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{selectors.first}': is not closed by '}'."</span>, <span class="ruby-identifier">_linenum</span>, <span class="ruby-identifier">_column</span>)
|
193
240
|
<span class="ruby-keyword kw">end</span>
|
241
|
+
<span class="ruby-ivar">@mode</span> = <span class="ruby-identifier">:selector</span>
|
242
|
+
<span class="ruby-identifier">rulesets</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">ruleset</span>
|
243
|
+
<span class="ruby-identifier">scan</span>()
|
194
244
|
<span class="ruby-keyword kw">end</span>
|
195
245
|
<span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>
|
196
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}':
|
246
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}': selector is expected."</span>)
|
197
247
|
<span class="ruby-keyword kw">end</span>
|
198
248
|
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">rulesets</span>
|
199
249
|
<span class="ruby-keyword kw">end</span>
|
@@ -204,21 +254,21 @@ example of presentation logic in css style:
|
|
204
254
|
|
205
255
|
<h3 class="section-bar">Protected Instance methods</h3>
|
206
256
|
|
207
|
-
<div id="method-
|
208
|
-
<a name="
|
257
|
+
<div id="method-M000091" class="method-detail">
|
258
|
+
<a name="M000091"></a>
|
209
259
|
|
210
260
|
<div class="method-heading">
|
211
|
-
<a href="#
|
261
|
+
<a href="#M000091" class="method-signature">
|
212
262
|
<span class="method-name">has_colon?</span><span class="method-args">()</span>
|
213
263
|
</a>
|
214
264
|
</div>
|
215
265
|
|
216
266
|
<div class="method-description">
|
217
267
|
<p><a class="source-toggle" href="#"
|
218
|
-
onclick="toggleCode('
|
219
|
-
<div class="method-source-code" id="
|
268
|
+
onclick="toggleCode('M000091-source');return false;">[Source]</a></p>
|
269
|
+
<div class="method-source-code" id="M000091-source">
|
220
270
|
<pre>
|
221
|
-
<span class="ruby-comment cmt"># File kwartz/parser.rb, line
|
271
|
+
<span class="ruby-comment cmt"># File kwartz/parser.rb, line 741</span>
|
222
272
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_colon?</span>
|
223
273
|
<span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@ch</span> <span class="ruby-operator">==</span> <span class="ruby-value">?:</span>
|
224
274
|
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}': ':' is required."</span>)
|
@@ -230,21 +280,21 @@ example of presentation logic in css style:
|
|
230
280
|
</div>
|
231
281
|
</div>
|
232
282
|
|
233
|
-
<div id="method-
|
234
|
-
<a name="
|
283
|
+
<div id="method-M000090" class="method-detail">
|
284
|
+
<a name="M000090"></a>
|
235
285
|
|
236
286
|
<div class="method-heading">
|
237
|
-
<a href="#
|
287
|
+
<a href="#M000090" class="method-signature">
|
238
288
|
<span class="method-name">keywords</span><span class="method-args">(keyword)</span>
|
239
289
|
</a>
|
240
290
|
</div>
|
241
291
|
|
242
292
|
<div class="method-description">
|
243
293
|
<p><a class="source-toggle" href="#"
|
244
|
-
onclick="toggleCode('
|
245
|
-
<div class="method-source-code" id="
|
294
|
+
onclick="toggleCode('M000090-source');return false;">[Source]</a></p>
|
295
|
+
<div class="method-source-code" id="M000090-source">
|
246
296
|
<pre>
|
247
|
-
<span class="ruby-comment cmt"># File kwartz/parser.rb, line
|
297
|
+
<span class="ruby-comment cmt"># File kwartz/parser.rb, line 735</span>
|
248
298
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">keywords</span>(<span class="ruby-identifier">keyword</span>)
|
249
299
|
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">CSSSTYLE_KEYWORDS</span>[<span class="ruby-identifier">keyword</span>]
|
250
300
|
<span class="ruby-keyword kw">end</span>
|
@@ -253,144 +303,69 @@ example of presentation logic in css style:
|
|
253
303
|
</div>
|
254
304
|
</div>
|
255
305
|
|
256
|
-
<div id="method-
|
257
|
-
<a name="
|
258
|
-
|
259
|
-
<div class="method-heading">
|
260
|
-
<a href="#M000077" class="method-signature">
|
261
|
-
<span class="method-name">parse_document_ruleset</span><span class="method-args">()</span>
|
262
|
-
</a>
|
263
|
-
</div>
|
264
|
-
|
265
|
-
<div class="method-description">
|
266
|
-
<p><a class="source-toggle" href="#"
|
267
|
-
onclick="toggleCode('M000077-source');return false;">[Source]</a></p>
|
268
|
-
<div class="method-source-code" id="M000077-source">
|
269
|
-
<pre>
|
270
|
-
<span class="ruby-comment cmt"># File kwartz/parser.rb, line 697</span>
|
271
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_document_ruleset</span>
|
272
|
-
<span class="ruby-identifier">assert</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@value</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'DOCUMENT'</span>
|
273
|
-
<span class="ruby-identifier">start_linenum</span> = <span class="ruby-ivar">@linenum</span>
|
274
|
-
<span class="ruby-identifier">scan</span>()
|
275
|
-
<span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'{'</span><span class="ruby-value str">'{'</span>
|
276
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}': '{' is expected."</span>)
|
277
|
-
<span class="ruby-keyword kw">end</span>
|
278
|
-
<span class="ruby-identifier">ruleset</span> = <span class="ruby-constant">DocumentRuleset</span>.<span class="ruby-identifier">new</span>
|
279
|
-
<span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@token</span>
|
280
|
-
<span class="ruby-identifier">scan</span>()
|
281
|
-
<span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@token</span>
|
282
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'}'</span><span class="ruby-value str">'}'</span> ; <span class="ruby-keyword kw">break</span>
|
283
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:global</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_global</span> <span class="ruby-identifier">_parse_words</span>()
|
284
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:local</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_local</span> <span class="ruby-identifier">_parse_words</span>()
|
285
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:fixture</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_fixture</span> <span class="ruby-identifier">_parse_block</span>()
|
286
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:begin</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_begin</span> <span class="ruby-identifier">_parse_block</span>()
|
287
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:end</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_end</span> <span class="ruby-identifier">_parse_block</span>()
|
288
|
-
<span class="ruby-comment cmt">#when :before ; has_colon?(); ruleset.set_before _parse_block()</span>
|
289
|
-
<span class="ruby-comment cmt">#when :after ; has_colon?(); ruleset.set_after _parse_block()</span>
|
290
|
-
<span class="ruby-keyword kw">else</span>
|
291
|
-
<span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span>
|
292
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-value str">"'#DOCUMENT': is not closed by '}'."</span>, <span class="ruby-identifier">start_linenum</span>)
|
293
|
-
<span class="ruby-keyword kw">else</span>
|
294
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}': unexpected token."</span>)
|
295
|
-
<span class="ruby-keyword kw">end</span>
|
296
|
-
<span class="ruby-keyword kw">end</span>
|
297
|
-
<span class="ruby-keyword kw">end</span>
|
298
|
-
<span class="ruby-identifier">assert</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'}'</span><span class="ruby-value str">'}'</span>
|
299
|
-
<span class="ruby-identifier">scan</span>()
|
300
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ruleset</span>
|
301
|
-
<span class="ruby-keyword kw">end</span>
|
302
|
-
</pre>
|
303
|
-
</div>
|
304
|
-
</div>
|
305
|
-
</div>
|
306
|
-
|
307
|
-
<div id="method-M000079" class="method-detail">
|
308
|
-
<a name="M000079"></a>
|
306
|
+
<div id="method-M000093" class="method-detail">
|
307
|
+
<a name="M000093"></a>
|
309
308
|
|
310
309
|
<div class="method-heading">
|
311
|
-
<a href="#
|
312
|
-
<span class="method-name">
|
310
|
+
<a href="#M000093" class="method-signature">
|
311
|
+
<span class="method-name">parse_declaration</span><span class="method-args">(ruleset)</span>
|
313
312
|
</a>
|
314
313
|
</div>
|
315
314
|
|
316
315
|
<div class="method-description">
|
317
316
|
<p><a class="source-toggle" href="#"
|
318
|
-
onclick="toggleCode('
|
319
|
-
<div class="method-source-code" id="
|
317
|
+
onclick="toggleCode('M000093-source');return false;">[Source]</a></p>
|
318
|
+
<div class="method-source-code" id="M000093-source">
|
320
319
|
<pre>
|
321
|
-
<span class="ruby-comment cmt"># File kwartz/parser.rb, line
|
322
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
323
|
-
<span class="ruby-identifier">assert</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-
|
324
|
-
<span class="ruby-identifier">start_linenum</span> = <span class="ruby-ivar">@linenum</span>
|
325
|
-
<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@value</span>
|
326
|
-
<span class="ruby-comment cmt">#names = [name]</span>
|
327
|
-
<span class="ruby-identifier">names</span> = []
|
328
|
-
<span class="ruby-identifier">scan</span>()
|
329
|
-
<span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">','</span><span class="ruby-value str">','</span>
|
330
|
-
<span class="ruby-identifier">scan</span>()
|
331
|
-
<span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-value">?#</span>
|
332
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}': '#name' is expected."</span>)
|
333
|
-
<span class="ruby-keyword kw">end</span>
|
334
|
-
<span class="ruby-identifier">scan_ident</span>()
|
335
|
-
<span class="ruby-identifier">names</span> <span class="ruby-operator"><<</span> <span class="ruby-ivar">@value</span>
|
336
|
-
<span class="ruby-identifier">scan</span>()
|
337
|
-
<span class="ruby-keyword kw">end</span>
|
338
|
-
<span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'{'</span><span class="ruby-value str">'{'</span>
|
339
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}': '{' is expected."</span>)
|
340
|
-
<span class="ruby-keyword kw">end</span>
|
341
|
-
|
342
|
-
<span class="ruby-identifier">ruleset</span> = <span class="ruby-constant">ElementRuleset</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>)
|
320
|
+
<span class="ruby-comment cmt"># File kwartz/parser.rb, line 766</span>
|
321
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_declaration</span>(<span class="ruby-identifier">ruleset</span>)
|
322
|
+
<span class="ruby-identifier">assert</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'{'</span><span class="ruby-value str">'{'</span>
|
343
323
|
<span class="ruby-keyword kw">while</span> <span class="ruby-keyword kw">true</span>
|
344
324
|
<span class="ruby-identifier">scan</span>()
|
345
325
|
<span class="ruby-identifier">flag_escape</span> = <span class="ruby-identifier">escape?</span>(<span class="ruby-ivar">@value</span>)
|
346
326
|
<span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@token</span>
|
347
327
|
<span class="ruby-keyword kw">when</span> <span class="ruby-keyword kw">nil</span> ; <span class="ruby-keyword kw">break</span>
|
348
328
|
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'}'</span><span class="ruby-value str">'}'</span> ; <span class="ruby-keyword kw">break</span>
|
349
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:stag</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_stag</span>
|
350
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:cont</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_cont</span>
|
351
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:etag</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_etag</span>
|
352
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:elem</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_elem</span>
|
353
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:value</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_value</span>
|
354
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:attrs</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_attrs</span>
|
355
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:append</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_append</span>
|
356
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:remove</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_remove</span>
|
329
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:stag</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_stag</span> <span class="ruby-identifier">_parse_expr</span>() , <span class="ruby-identifier">flag_escape</span>
|
330
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:cont</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_cont</span> <span class="ruby-identifier">_parse_expr</span>() , <span class="ruby-identifier">flag_escape</span>
|
331
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:etag</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_etag</span> <span class="ruby-identifier">_parse_expr</span>() , <span class="ruby-identifier">flag_escape</span>
|
332
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:elem</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_elem</span> <span class="ruby-identifier">_parse_expr</span>() , <span class="ruby-identifier">flag_escape</span>
|
333
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:value</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_value</span> <span class="ruby-identifier">_parse_expr</span>() , <span class="ruby-identifier">flag_escape</span>
|
334
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:attrs</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_attrs</span> <span class="ruby-identifier">_parse_pairs</span>(), <span class="ruby-identifier">flag_escape</span>
|
335
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:append</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_append</span> <span class="ruby-identifier">_parse_exprs</span>(), <span class="ruby-identifier">flag_escape</span>
|
336
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:remove</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_remove</span> <span class="ruby-identifier">_parse_strs</span>()
|
357
337
|
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:tagname</span>; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_tagname</span> <span class="ruby-identifier">_parse_str</span>()
|
358
|
-
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:logic</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_logic</span>
|
338
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:logic</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_logic</span> <span class="ruby-identifier">_parse_block</span>()
|
339
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:before</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_before</span> <span class="ruby-identifier">_parse_block</span>()
|
340
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:after</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_after</span> <span class="ruby-identifier">_parse_block</span>()
|
341
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:begin</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_before</span> <span class="ruby-identifier">_parse_block</span>()
|
342
|
+
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:end</span> ; <span class="ruby-identifier">has_colon?</span>(); <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">set_after</span> <span class="ruby-identifier">_parse_block</span>()
|
359
343
|
<span class="ruby-keyword kw">else</span>
|
360
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}': unexpected token."</span>)
|
344
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}': unexpected token."</span>) <span class="ruby-comment cmt">#'</span>
|
361
345
|
<span class="ruby-keyword kw">end</span>
|
362
346
|
<span class="ruby-keyword kw">end</span>
|
363
|
-
<span class="ruby-
|
364
|
-
<span class="ruby-identifier">rulesets</span> = [<span class="ruby-identifier">ruleset</span>]
|
365
|
-
<span class="ruby-identifier">names</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span><span class="ruby-operator">|</span> <span class="ruby-identifier">rulesets</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">ruleset</span>.<span class="ruby-identifier">duplicate</span>(<span class="ruby-identifier">name</span>) <span class="ruby-keyword kw">end</span>
|
366
|
-
|
367
|
-
<span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span>
|
368
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'##{name}': is not closed by '}'."</span>, <span class="ruby-identifier">start_linenum</span>)
|
369
|
-
<span class="ruby-keyword kw">end</span>
|
370
|
-
<span class="ruby-identifier">assert</span> <span class="ruby-node">"@token=#{@token.inspect}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'}'</span><span class="ruby-value str">'}'</span>
|
371
|
-
<span class="ruby-identifier">scan</span>()
|
372
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">rulesets</span>
|
347
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ruleset</span>
|
373
348
|
<span class="ruby-keyword kw">end</span>
|
374
349
|
</pre>
|
375
350
|
</div>
|
376
351
|
</div>
|
377
352
|
</div>
|
378
353
|
|
379
|
-
<div id="method-
|
380
|
-
<a name="
|
354
|
+
<div id="method-M000094" class="method-detail">
|
355
|
+
<a name="M000094"></a>
|
381
356
|
|
382
357
|
<div class="method-heading">
|
383
|
-
<a href="#
|
358
|
+
<a href="#M000094" class="method-signature">
|
384
359
|
<span class="method-name">parse_import_command</span><span class="method-args">()</span>
|
385
360
|
</a>
|
386
361
|
</div>
|
387
362
|
|
388
363
|
<div class="method-description">
|
389
364
|
<p><a class="source-toggle" href="#"
|
390
|
-
onclick="toggleCode('
|
391
|
-
<div class="method-source-code" id="
|
365
|
+
onclick="toggleCode('M000094-source');return false;">[Source]</a></p>
|
366
|
+
<div class="method-source-code" id="M000094-source">
|
392
367
|
<pre>
|
393
|
-
<span class="ruby-comment cmt"># File kwartz/parser.rb, line
|
368
|
+
<span class="ruby-comment cmt"># File kwartz/parser.rb, line 796</span>
|
394
369
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_import_command</span>
|
395
370
|
<span class="ruby-identifier">c</span> = <span class="ruby-ivar">@ch</span>
|
396
371
|
<span class="ruby-identifier">c</span> = <span class="ruby-identifier">getch</span>() <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">is_whitespace</span>(<span class="ruby-identifier">c</span>)
|
@@ -402,13 +377,18 @@ example of presentation logic in css style:
|
|
402
377
|
<span class="ruby-identifier">filename</span> = <span class="ruby-identifier">dir</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">filename</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dir</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">'.'</span>
|
403
378
|
<span class="ruby-keyword kw">end</span>
|
404
379
|
<span class="ruby-identifier">test</span>(<span class="ruby-value">?f</span>, <span class="ruby-identifier">filename</span>) <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{filename}': import file not found."</span>)
|
380
|
+
<span class="ruby-identifier">_linenum</span>, <span class="ruby-identifier">_column</span> = <span class="ruby-ivar">@linenum</span>, <span class="ruby-ivar">@column</span>
|
405
381
|
<span class="ruby-identifier">c</span> = <span class="ruby-ivar">@ch</span>
|
406
382
|
<span class="ruby-identifier">c</span> = <span class="ruby-identifier">getch</span>() <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">is_whitespace</span>(<span class="ruby-identifier">c</span>)
|
407
383
|
<span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value">?;</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-value str">"';' required."</span>)
|
408
384
|
<span class="ruby-identifier">c</span> = <span class="ruby-identifier">getch</span>()
|
409
385
|
<span class="ruby-identifier">scan</span>()
|
410
386
|
<span class="ruby-identifier">parser</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@properties</span>)
|
411
|
-
<span class="ruby-
|
387
|
+
<span class="ruby-keyword kw">begin</span>
|
388
|
+
<span class="ruby-identifier">ruleset_list</span> = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">filename</span>), <span class="ruby-identifier">filename</span>)
|
389
|
+
<span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">ex</span>
|
390
|
+
<span class="ruby-identifier">parse_error</span>(<span class="ruby-identifier">ex</span>.<span class="ruby-identifier">message</span>, <span class="ruby-identifier">_linenum</span>, <span class="ruby-identifier">_column</span>)
|
391
|
+
<span class="ruby-keyword kw">end</span>
|
412
392
|
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ruleset_list</span>
|
413
393
|
<span class="ruby-keyword kw">end</span>
|
414
394
|
</pre>
|
@@ -416,11 +396,46 @@ example of presentation logic in css style:
|
|
416
396
|
</div>
|
417
397
|
</div>
|
418
398
|
|
419
|
-
<div id="method-
|
420
|
-
<a name="
|
399
|
+
<div id="method-M000092" class="method-detail">
|
400
|
+
<a name="M000092"></a>
|
401
|
+
|
402
|
+
<div class="method-heading">
|
403
|
+
<a href="#M000092" class="method-signature">
|
404
|
+
<span class="method-name">parse_selectors</span><span class="method-args">()</span>
|
405
|
+
</a>
|
406
|
+
</div>
|
407
|
+
|
408
|
+
<div class="method-description">
|
409
|
+
<p><a class="source-toggle" href="#"
|
410
|
+
onclick="toggleCode('M000092-source');return false;">[Source]</a></p>
|
411
|
+
<div class="method-source-code" id="M000092-source">
|
412
|
+
<pre>
|
413
|
+
<span class="ruby-comment cmt"># File kwartz/parser.rb, line 749</span>
|
414
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_selectors</span>
|
415
|
+
<span class="ruby-identifier">assert</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:selector</span>
|
416
|
+
<span class="ruby-identifier">start_linenum</span> = <span class="ruby-ivar">@linenum</span>
|
417
|
+
<span class="ruby-identifier">selectors</span> = [ <span class="ruby-ivar">@value</span> ]
|
418
|
+
<span class="ruby-identifier">scan</span>()
|
419
|
+
<span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">','</span><span class="ruby-value str">','</span>
|
420
|
+
<span class="ruby-identifier">scan</span>()
|
421
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@token</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:selector</span>
|
422
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">parse_error</span>(<span class="ruby-node">"'#{@value}': selector is expected (or additional comma exists)."</span>) <span class="ruby-comment cmt">#'</span>
|
423
|
+
<span class="ruby-keyword kw">end</span>
|
424
|
+
<span class="ruby-identifier">selectors</span> <span class="ruby-operator"><<</span> <span class="ruby-ivar">@value</span>
|
425
|
+
<span class="ruby-identifier">scan</span>()
|
426
|
+
<span class="ruby-keyword kw">end</span>
|
427
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">selectors</span>
|
428
|
+
<span class="ruby-keyword kw">end</span>
|
429
|
+
</pre>
|
430
|
+
</div>
|
431
|
+
</div>
|
432
|
+
</div>
|
433
|
+
|
434
|
+
<div id="method-M000089" class="method-detail">
|
435
|
+
<a name="M000089"></a>
|
421
436
|
|
422
437
|
<div class="method-heading">
|
423
|
-
<a href="#
|
438
|
+
<a href="#M000089" class="method-signature">
|
424
439
|
<span class="method-name">scan_hook</span><span class="method-args">()</span>
|
425
440
|
</a>
|
426
441
|
</div>
|
@@ -430,10 +445,10 @@ example of presentation logic in css style:
|
|
430
445
|
return false when not hooked
|
431
446
|
</p>
|
432
447
|
<p><a class="source-toggle" href="#"
|
433
|
-
onclick="toggleCode('
|
434
|
-
<div class="method-source-code" id="
|
448
|
+
onclick="toggleCode('M000089-source');return false;">[Source]</a></p>
|
449
|
+
<div class="method-source-code" id="M000089-source">
|
435
450
|
<pre>
|
436
|
-
<span class="ruby-comment cmt"># File kwartz/parser.rb, line
|
451
|
+
<span class="ruby-comment cmt"># File kwartz/parser.rb, line 658</span>
|
437
452
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scan_hook</span>
|
438
453
|
<span class="ruby-comment cmt">## comment</span>
|
439
454
|
<span class="ruby-identifier">c</span> = <span class="ruby-ivar">@ch</span>
|
@@ -464,22 +479,46 @@ return false when not hooked
|
|
464
479
|
<span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#if</span>
|
465
480
|
<span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#if</span>
|
466
481
|
|
467
|
-
<span class="ruby-comment cmt"
|
468
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-
|
469
|
-
<span class="ruby-
|
470
|
-
<span class="ruby-keyword kw">
|
471
|
-
<span class="ruby-
|
472
|
-
<span class="ruby-
|
473
|
-
<span class="ruby-keyword kw">
|
482
|
+
<span class="ruby-comment cmt">##</span>
|
483
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@mode</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:selector</span>
|
484
|
+
<span class="ruby-comment cmt"># '#name' or '.name'</span>
|
485
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value">?#</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value">?.</span>
|
486
|
+
<span class="ruby-identifier">start_char</span> = <span class="ruby-identifier">c</span>
|
487
|
+
<span class="ruby-identifier">name</span> = <span class="ruby-value str">''</span>
|
488
|
+
<span class="ruby-keyword kw">while</span> <span class="ruby-identifier">is_identchar</span>(<span class="ruby-identifier">c</span> = <span class="ruby-identifier">getch</span>()) <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value">?-</span>
|
489
|
+
<span class="ruby-identifier">name</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
490
|
+
<span class="ruby-keyword kw">end</span>
|
491
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">empty?</span>
|
492
|
+
<span class="ruby-ivar">@error</span> = <span class="ruby-identifier">:invalid_char</span>
|
493
|
+
<span class="ruby-ivar">@value</span> = <span class="ruby-identifier">start_char</span>.<span class="ruby-identifier">chr</span>
|
494
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@token</span> = <span class="ruby-identifier">:error</span>
|
495
|
+
<span class="ruby-keyword kw">end</span>
|
496
|
+
<span class="ruby-ivar">@value</span> = <span class="ruby-identifier">start_char</span>.<span class="ruby-identifier">chr</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">name</span>
|
497
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@token</span> = <span class="ruby-identifier">:selector</span>
|
498
|
+
<span class="ruby-keyword kw">end</span>
|
499
|
+
<span class="ruby-comment cmt"># 'tagname'</span>
|
500
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_identchar</span>(<span class="ruby-identifier">c</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value">?-</span>
|
501
|
+
<span class="ruby-identifier">name</span> = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">chr</span>
|
502
|
+
<span class="ruby-keyword kw">while</span> <span class="ruby-identifier">is_identchar</span>(<span class="ruby-identifier">c</span> = <span class="ruby-identifier">getch</span>()) <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value">?-</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value">?:</span>
|
503
|
+
<span class="ruby-identifier">name</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
504
|
+
<span class="ruby-keyword kw">end</span>
|
505
|
+
<span class="ruby-ivar">@value</span> = <span class="ruby-identifier">name</span>
|
506
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@token</span> = <span class="ruby-identifier">:selector</span>
|
507
|
+
<span class="ruby-keyword kw">end</span>
|
508
|
+
<span class="ruby-comment cmt"># '@import'</span>
|
509
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value">?@</span>
|
510
|
+
<span class="ruby-identifier">name</span> = <span class="ruby-value str">''</span>
|
511
|
+
<span class="ruby-keyword kw">while</span> <span class="ruby-identifier">is_identchar</span>(<span class="ruby-identifier">c</span> = <span class="ruby-identifier">getch</span>())
|
512
|
+
<span class="ruby-identifier">name</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
513
|
+
<span class="ruby-keyword kw">end</span>
|
514
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">empty?</span>
|
515
|
+
<span class="ruby-ivar">@error</span> = <span class="ruby-identifier">:invalid_char</span>
|
516
|
+
<span class="ruby-ivar">@value</span> = <span class="ruby-value str">'@'</span>
|
517
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@token</span> = <span class="ruby-identifier">:error</span>
|
518
|
+
<span class="ruby-keyword kw">end</span>
|
519
|
+
<span class="ruby-ivar">@value</span> = <span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">name</span>
|
520
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@token</span> = <span class="ruby-identifier">:command</span>
|
474
521
|
<span class="ruby-keyword kw">end</span>
|
475
|
-
<span class="ruby-ivar">@value</span> = <span class="ruby-value str">'#'</span>
|
476
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@token</span> = <span class="ruby-value">?#</span>
|
477
|
-
<span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#if</span>
|
478
|
-
|
479
|
-
<span class="ruby-comment cmt">## '@import "foo.plogic"'</span>
|
480
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value">?@</span>
|
481
|
-
<span class="ruby-ivar">@value</span> = <span class="ruby-value str">'@'</span>
|
482
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@token</span> = <span class="ruby-value">?@</span>
|
483
522
|
<span class="ruby-keyword kw">end</span>
|
484
523
|
|
485
524
|
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|