Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(606)

Side by Side Diff: pkg/csslib/lib/src/tree_printer.dart

Issue 814113004: Pull args, intl, logging, shelf, and source_maps out of the SDK. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Also csslib. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/csslib/lib/src/tree_base.dart ('k') | pkg/csslib/lib/src/validate.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 part of csslib.visitor;
6
7 // TODO(terry): Enable class for debug only; when conditional imports enabled.
8
9 /** Helper function to dump the CSS AST. */
10 String treeToDebugString(StyleSheet styleSheet, [bool useSpan = false]) {
11 var to = new TreeOutput();
12 new _TreePrinter(to, useSpan)..visitTree(styleSheet);
13 return to.toString();
14 }
15
16 /** Tree dump for debug output of the CSS AST. */
17 class _TreePrinter extends Visitor {
18 final TreeOutput output;
19 final bool useSpan;
20 _TreePrinter(this.output, this.useSpan) { output.printer = this; }
21
22 void visitTree(StyleSheet tree) => visitStylesheet(tree);
23
24 void heading(String heading, node) {
25 if (useSpan) {
26 output.heading(heading, node.span);
27 } else {
28 output.heading(heading);
29 }
30 }
31
32 void visitStylesheet(StyleSheet node) {
33 heading('Stylesheet', node);
34 output.depth++;
35 super.visitStyleSheet(node);
36 output.depth--;
37 }
38
39 void visitTopLevelProduction(TopLevelProduction node) {
40 heading('TopLevelProduction', node);
41 }
42
43 void visitDirective(Directive node) {
44 heading('Directive', node);
45 }
46
47 void visitCssComment(CssComment node) {
48 heading('Comment', node);
49 output.depth++;
50 output.writeValue('comment value', node.comment);
51 output.depth--;
52 }
53
54 void visitCommentDefinition(CommentDefinition node) {
55 heading('CommentDefinition (CDO/CDC)', node);
56 output.depth++;
57 output.writeValue('comment value', node.comment);
58 output.depth--;
59 }
60
61 void visitMediaExpression(MediaExpression node) {
62 heading('MediaExpression', node);
63 output.writeValue('feature', node.mediaFeature);
64 if (node.andOperator) output.writeValue('AND operator', '');
65 visitExpressions(node.exprs);
66 }
67
68 void visitMediaQueries(MediaQuery query) {
69 output.heading('MediaQueries');
70 output.writeValue('unary', query.unary);
71 output.writeValue('media type', query.mediaType);
72 output.writeNodeList('media expressions', query.expressions);
73 }
74
75 void visitMediaDirective(MediaDirective node) {
76 heading('MediaDirective', node);
77 output.depth++;
78 output.writeNodeList('media queries', node.mediaQueries);
79 output.writeNodeList('rule sets', node.rulesets);
80 super.visitMediaDirective(node);
81 output.depth--;
82 }
83
84 void visitPageDirective(PageDirective node) {
85 heading('PageDirective', node);
86 output.depth++;
87 output.writeValue('pseudo page', node._pseudoPage);
88 super.visitPageDirective(node);
89 output.depth;
90 }
91
92 void visitCharsetDirective(CharsetDirective node) {
93 heading('Charset Directive', node);
94 output.writeValue('charset encoding', node.charEncoding);
95 }
96
97 void visitImportDirective(ImportDirective node) {
98 heading('ImportDirective', node);
99 output.depth++;
100 output.writeValue('import', node.import);
101 super.visitImportDirective(node);
102 output.writeNodeList('media', node.mediaQueries);
103 output.depth--;
104 }
105
106 void visitContentDirective(ContentDirective node) {
107 print("ContentDirective not implemented");
108 }
109
110 void visitKeyFrameDirective(KeyFrameDirective node) {
111 heading('KeyFrameDirective', node);
112 output.depth++;
113 output.writeValue('keyframe', node.keyFrameName);
114 output.writeValue('name', node.name);
115 output.writeNodeList('blocks', node._blocks);
116 output.depth--;
117 }
118
119 void visitKeyFrameBlock(KeyFrameBlock node) {
120 heading('KeyFrameBlock', node);
121 output.depth++;
122 super.visitKeyFrameBlock(node);
123 output.depth--;
124 }
125
126 void visitFontFaceDirective(FontFaceDirective node) {
127 // TODO(terry): To Be Implemented
128 }
129
130 void visitStyletDirective(StyletDirective node) {
131 heading('StyletDirective', node);
132 output.writeValue('dartClassName', node.dartClassName);
133 output.depth++;
134 output.writeNodeList('rulesets', node.rulesets);
135 output.depth--;
136 }
137
138 void visitNamespaceDirective(NamespaceDirective node) {
139 heading('NamespaceDirective', node);
140 output.depth++;
141 output.writeValue('prefix', node._prefix);
142 output.writeValue('uri', node._uri);
143 output.depth--;
144 }
145
146 void visitVarDefinitionDirective(VarDefinitionDirective node) {
147 heading('Less variable definition', node);
148 output.depth++;
149 visitVarDefinition(node.def);
150 output.depth--;
151 }
152
153 void visitMixinRulesetDirective(MixinRulesetDirective node) {
154 heading('Mixin top-level ${node.name}', node);
155 output.writeNodeList('parameters', node.definedArgs);
156 output.depth++;
157 _visitNodeList(node.rulesets);
158 output.depth--;
159 }
160
161 void visitMixinDeclarationDirective(MixinDeclarationDirective node) {
162 heading('Mixin declaration ${node.name}', node);
163 output.writeNodeList('parameters', node.definedArgs);
164 output.depth++;
165 visitDeclarationGroup(node.declarations);
166 output.depth--;
167 }
168
169 /**
170 * Added optional newLine for handling @include at top-level vs/ inside of
171 * a declaration group.
172 */
173 void visitIncludeDirective(IncludeDirective node) {
174 heading('IncludeDirective ${node.name}', node);
175 var flattened = node.args.expand((e) => e).toList();
176 output.writeNodeList('parameters', flattened);
177 }
178
179 void visitIncludeMixinAtDeclaration(IncludeMixinAtDeclaration node) {
180 heading('IncludeMixinAtDeclaration ${node.include.name}', node);
181 output.depth++;
182 visitIncludeDirective(node.include);
183 output.depth--;
184 }
185
186 void visitExtendDeclaration(ExtendDeclaration node) {
187 heading('ExtendDeclaration', node);
188 output.depth++;
189 _visitNodeList(node.selectors);
190 output.depth--;
191 }
192
193 void visitRuleSet(RuleSet node) {
194 heading('Ruleset', node);
195 output.depth++;
196 super.visitRuleSet(node);
197 output.depth--;
198 }
199
200 void visitDeclarationGroup(DeclarationGroup node) {
201 heading('DeclarationGroup', node);
202 output.depth++;
203 output.writeNodeList('declarations', node.declarations);
204 output.depth--;
205 }
206
207 void visitMarginGroup(MarginGroup node) {
208 heading('MarginGroup', node);
209 output.depth++;
210 output.writeValue('@directive', node.margin_sym);
211 output.writeNodeList('declarations', node.declarations);
212 output.depth--;
213 }
214
215 void visitDeclaration(Declaration node) {
216 heading('Declaration', node);
217 output.depth++;
218 if (node.isIE7) output.write('IE7 property');
219 output.write('property');
220 super.visitDeclaration(node);
221 output.writeNode('expression', node._expression);
222 if (node.important) {
223 output.writeValue('!important', 'true');
224 }
225 output.depth--;
226 }
227
228 void visitVarDefinition(VarDefinition node) {
229 heading('Var', node);
230 output.depth++;
231 output.write('defintion');
232 super.visitVarDefinition(node);
233 output.writeNode('expression', node._expression);
234 output.depth--;
235 }
236
237 void visitSelectorGroup(SelectorGroup node) {
238 heading('Selector Group', node);
239 output.depth++;
240 output.writeNodeList('selectors', node.selectors);
241 output.depth--;
242 }
243
244 void visitSelector(Selector node) {
245 heading('Selector', node);
246 output.depth++;
247 output.writeNodeList('simpleSelectorsSequences',
248 node.simpleSelectorSequences);
249 output.depth--;
250 }
251
252 void visitSimpleSelectorSequence(SimpleSelectorSequence node) {
253 heading('SimpleSelectorSequence', node);
254 output.depth++;
255 if (node.isCombinatorNone) {
256 output.writeValue('combinator', "NONE");
257 } else if (node.isCombinatorDescendant) {
258 output.writeValue('combinator', "descendant");
259 } else if (node.isCombinatorPlus) {
260 output.writeValue('combinator', "+");
261 } else if (node.isCombinatorGreater) {
262 output.writeValue('combinator', ">");
263 } else if (node.isCombinatorTilde) {
264 output.writeValue('combinator', "~");
265 } else {
266 output.writeValue('combinator', "ERROR UNKNOWN");
267 }
268
269 super.visitSimpleSelectorSequence(node);
270
271 output.depth--;
272 }
273
274 void visitNamespaceSelector(NamespaceSelector node) {
275 heading('Namespace Selector', node);
276 output.depth++;
277
278 super.visitNamespaceSelector(node);
279
280 visitSimpleSelector(node.nameAsSimpleSelector);
281 output.depth--;
282 }
283
284 void visitElementSelector(ElementSelector node) {
285 heading('Element Selector', node);
286 output.depth++;
287 super.visitElementSelector(node);
288 output.depth--;
289 }
290
291 void visitAttributeSelector(AttributeSelector node) {
292 heading('AttributeSelector', node);
293 output.depth++;
294 super.visitAttributeSelector(node);
295 String tokenStr = node.matchOperatorAsTokenString();
296 output.writeValue('operator', '${node.matchOperator()} (${tokenStr})');
297 output.writeValue('value', node.valueToString());
298 output.depth--;
299 }
300
301 void visitIdSelector(IdSelector node) {
302 heading('Id Selector', node);
303 output.depth++;
304 super.visitIdSelector(node);
305 output.depth--;
306 }
307
308 void visitClassSelector(ClassSelector node) {
309 heading('Class Selector', node);
310 output.depth++;
311 super.visitClassSelector(node);
312 output.depth--;
313 }
314
315 void visitPseudoClassSelector(PseudoClassSelector node) {
316 heading('Pseudo Class Selector', node);
317 output.depth++;
318 super.visitPseudoClassSelector(node);
319 output.depth--;
320 }
321
322 void visitPseudoElementSelector(PseudoElementSelector node) {
323 heading('Pseudo Element Selector', node);
324 output.depth++;
325 super.visitPseudoElementSelector(node);
326 output.depth--;
327 }
328
329 void visitPseudoClassFunctionSelector(PseudoClassFunctionSelector node) {
330 heading('Pseudo Class Function Selector', node);
331 output.depth++;
332 visitSelectorExpression(node.expression);
333 super.visitPseudoClassFunctionSelector(node);
334 output.depth--;
335 }
336
337 void visitPseudoElementFunctionSelector(PseudoElementFunctionSelector node) {
338 heading('Pseudo Element Function Selector', node);
339 output.depth++;
340 visitSelectorExpression(node.expression);
341 super.visitPseudoElementFunctionSelector(node);
342 output.depth--;
343 }
344
345 void visitSelectorExpression(SelectorExpression node) {
346 heading('Selector Expression', node);
347 output.depth++;
348 output.writeNodeList('expressions', node.expressions);
349 output.depth--;
350 }
351
352 void visitNegationSelector(NegationSelector node) {
353 super.visitNegationSelector(node);
354 output.depth++;
355 heading('Negation Selector', node);
356 output.writeNode('Negation arg', node.negationArg);
357 output.depth--;
358 }
359
360 void visitUnicodeRangeTerm(UnicodeRangeTerm node) {
361 heading('UnicodeRangeTerm', node);
362 output.depth++;
363 output.writeValue('1st value', node.first);
364 output.writeValue('2nd value', node.second);
365 output.depth--;
366 }
367
368 void visitLiteralTerm(LiteralTerm node) {
369 heading('LiteralTerm', node);
370 output.depth++;
371 output.writeValue('value', node.text);
372 output.depth--;
373 }
374
375 void visitHexColorTerm(HexColorTerm node) {
376 heading('HexColorTerm', node);
377 output.depth++;
378 output.writeValue('hex value', node.text);
379 output.writeValue('decimal value', node.value);
380 output.depth--;
381 }
382
383 void visitNumberTerm(NumberTerm node) {
384 heading('NumberTerm', node);
385 output.depth++;
386 output.writeValue('value', node.text);
387 output.depth--;
388 }
389
390 void visitUnitTerm(UnitTerm node) {
391 String unitValue;
392
393 output.depth++;
394 output.writeValue('value', node.text);
395 output.writeValue('unit', node.unitToString());
396 output.depth--;
397 }
398
399 void visitLengthTerm(LengthTerm node) {
400 heading('LengthTerm', node);
401 super.visitLengthTerm(node);
402 }
403
404 void visitPercentageTerm(PercentageTerm node) {
405 heading('PercentageTerm', node);
406 output.depth++;
407 super.visitPercentageTerm(node);
408 output.depth--;
409 }
410
411 void visitEmTerm(EmTerm node) {
412 heading('EmTerm', node);
413 output.depth++;
414 super.visitEmTerm(node);
415 output.depth--;
416 }
417
418 void visitExTerm(ExTerm node) {
419 heading('ExTerm', node);
420 output.depth++;
421 super.visitExTerm(node);
422 output.depth--;
423 }
424
425 void visitAngleTerm(AngleTerm node) {
426 heading('AngleTerm', node);
427 super.visitAngleTerm(node);
428 }
429
430 void visitTimeTerm(TimeTerm node) {
431 heading('TimeTerm', node);
432 super.visitTimeTerm(node);
433 }
434
435 void visitFreqTerm(FreqTerm node) {
436 heading('FreqTerm', node);
437 super.visitFreqTerm(node);
438 }
439
440 void visitFractionTerm(FractionTerm node) {
441 heading('FractionTerm', node);
442 output.depth++;
443 super.visitFractionTerm(node);
444 output.depth--;
445 }
446
447 void visitUriTerm(UriTerm node) {
448 heading('UriTerm', node);
449 output.depth++;
450 super.visitUriTerm(node);
451 output.depth--;
452 }
453
454 void visitFunctionTerm(FunctionTerm node) {
455 heading('FunctionTerm', node);
456 output.depth++;
457 super.visitFunctionTerm(node);
458 output.depth--;
459 }
460
461 void visitGroupTerm(GroupTerm node) {
462 heading('GroupTerm', node);
463 output.depth++;
464 output.writeNodeList('grouped terms', node._terms);
465 output.depth--;
466 }
467
468 void visitItemTerm(ItemTerm node) {
469 heading('ItemTerm', node);
470 super.visitItemTerm(node);
471 }
472
473 void visitIE8Term(IE8Term node) {
474 heading('IE8Term', node);
475 visitLiteralTerm(node);
476 }
477
478 void visitOperatorSlash(OperatorSlash node) {
479 heading('OperatorSlash', node);
480 }
481
482 void visitOperatorComma(OperatorComma node) {
483 heading('OperatorComma', node);
484 }
485
486 void visitOperatorPlus(OperatorPlus node) {
487 heading('OperatorPlus', node);
488 }
489
490 void visitOperatorMinus(OperatorMinus node) {
491 heading('OperatorMinus', node);
492 }
493
494 void visitVarUsage(VarUsage node) {
495 heading('Var', node);
496 output.depth++;
497 output.write('usage ${node.name}');
498 output.writeNodeList('default values', node.defaultValues);
499 output.depth--;
500 }
501
502 void visitExpressions(Expressions node) {
503 heading('Expressions', node);
504 output.depth++;
505 output.writeNodeList('expressions', node.expressions);
506 output.depth--;
507 }
508
509 void visitBinaryExpression(BinaryExpression node) {
510 heading('BinaryExpression', node);
511 // TODO(terry): TBD
512 }
513
514 void visitUnaryExpression(UnaryExpression node) {
515 heading('UnaryExpression', node);
516 // TODO(terry): TBD
517 }
518
519 void visitIdentifier(Identifier node) {
520 heading('Identifier(${output.toValue(node.name)})', node);
521 }
522
523 void visitWildcard(Wildcard node) {
524 heading('Wildcard(*)', node);
525 }
526
527 void visitDartStyleExpression(DartStyleExpression node) {
528 heading('DartStyleExpression', node);
529 }
530
531 void visitFontExpression(FontExpression node) {
532 heading('Dart Style FontExpression', node);
533 }
534
535 void visitBoxExpression(BoxExpression node) {
536 heading('Dart Style BoxExpression', node);
537 }
538
539 void visitMarginExpression(MarginExpression node) {
540 heading('Dart Style MarginExpression', node);
541 }
542
543 void visitBorderExpression(BorderExpression node) {
544 heading('Dart Style BorderExpression', node);
545 }
546
547 void visitHeightExpression(HeightExpression node) {
548 heading('Dart Style HeightExpression', node);
549 }
550
551 void visitPaddingExpression(PaddingExpression node) {
552 heading('Dart Style PaddingExpression', node);
553 }
554
555 void visitWidthExpression(WidthExpression node) {
556 heading('Dart Style WidthExpression', node);
557 }
558 }
OLDNEW
« no previous file with comments | « pkg/csslib/lib/src/tree_base.dart ('k') | pkg/csslib/lib/src/validate.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698