kwartz 3.1.2 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|