pkg/csslib: types, fixes, cleanup
R=terry@google.com
Review URL: https://codereview.chromium.org//64373003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/csslib@30049 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/bin/css.dart b/bin/css.dart
index 08f2930..f64faac 100644
--- a/bin/css.dart
+++ b/bin/css.dart
@@ -5,4 +5,4 @@
import 'package:csslib/css.dart' as css;
-void main() => css.main();
+void main(List<String> args) => css.main(args);
diff --git a/lib/src/css_printer.dart b/lib/src/css_printer.dart
index b532544..73c2984 100644
--- a/lib/src/css_printer.dart
+++ b/lib/src/css_printer.dart
@@ -137,7 +137,7 @@
void visitKeyFrameDirective(KeyFrameDirective node) {
emit('$_newLine${node.keyFrameName} ');
- node._name.visit(this);
+ node.name.visit(this);
emit('$_sp{$_newLine');
for (final block in node._blocks) {
block.visit(this);
@@ -274,7 +274,7 @@
void visitSelectorGroup(SelectorGroup node) {
- var selectors = node._selectors;
+ var selectors = node.selectors;
var selectorsLength = selectors.length;
for (var i = 0; i < selectorsLength; i++) {
if (i > 0) emit(',$_sp');
@@ -284,7 +284,7 @@
void visitSimpleSelectorSequence(SimpleSelectorSequence node) {
emit('${node._combinatorToString}');
- node._selector.visit(this);
+ node.simpleSelector.visit(this);
}
void visitSimpleSelector(SimpleSelector node) {
diff --git a/lib/src/tree.dart b/lib/src/tree.dart
index 1de5957..941eb57 100644
--- a/lib/src/tree.dart
+++ b/lib/src/tree.dart
@@ -15,7 +15,7 @@
Identifier clone() => new Identifier(name, span);
- visit(VisitorBase visitor) => visitor.visitIdentifier(this);
+ void visit(VisitorBase visitor) => visitor.visitIdentifier(this);
String toString() => name;
}
@@ -55,51 +55,44 @@
}
class SelectorGroup extends TreeNode {
- List<Selector> _selectors;
+ final List<Selector> selectors;
- SelectorGroup(this._selectors, Span span): super(span);
+ SelectorGroup(this.selectors, Span span): super(span);
- List<Selector> get selectors => _selectors;
+ SelectorGroup clone() => new SelectorGroup(selectors, span);
- SelectorGroup clone() => new SelectorGroup(_selectors, span);
-
- visit(VisitorBase visitor) => visitor.visitSelectorGroup(this);
+ void visit(VisitorBase visitor) => visitor.visitSelectorGroup(this);
}
class Selector extends TreeNode {
- final List<SimpleSelectorSequence> _simpleSelectorSequences;
+ final List<SimpleSelectorSequence> simpleSelectorSequences;
- Selector(this._simpleSelectorSequences, Span span) : super(span);
+ Selector(this.simpleSelectorSequences, Span span) : super(span);
- List<SimpleSelectorSequence> get simpleSelectorSequences =>
- _simpleSelectorSequences;
+ void add(SimpleSelectorSequence seq) => simpleSelectorSequences.add(seq);
- add(SimpleSelectorSequence seq) => _simpleSelectorSequences.add(seq);
-
- int get length => _simpleSelectorSequences.length;
+ int get length => simpleSelectorSequences.length;
Selector clone() {
- var simpleSequences = [];
- for (var simpleSeq in simpleSelectorSequences) {
- simpleSequences.add(simpleSeq.clone());
- }
+ var simpleSequences = simpleSelectorSequences
+ .map((ss) => ss.clone())
+ .toList();
+
return new Selector(simpleSequences, span);
}
- visit(VisitorBase visitor) => visitor.visitSelector(this);
+ void visit(VisitorBase visitor) => visitor.visitSelector(this);
}
class SimpleSelectorSequence extends TreeNode {
/** +, >, ~, NONE */
int combinator;
- final SimpleSelector _selector;
+ final SimpleSelector simpleSelector;
- SimpleSelectorSequence(this._selector, Span span,
+ SimpleSelectorSequence(this.simpleSelector, Span span,
[int combinator = TokenKind.COMBINATOR_NONE])
: combinator = combinator, super(span);
- get simpleSelector => _selector;
-
bool get isCombinatorNone => combinator == TokenKind.COMBINATOR_NONE;
bool get isCombinatorPlus => combinator == TokenKind.COMBINATOR_PLUS;
bool get isCombinatorGreater => combinator == TokenKind.COMBINATOR_GREATER;
@@ -114,16 +107,16 @@
isCombinatorTilde ? ' ~ ' : '';
SimpleSelectorSequence clone() =>
- new SimpleSelectorSequence(_selector, span, combinator);
+ new SimpleSelectorSequence(simpleSelector, span, combinator);
- visit(VisitorBase visitor) => visitor.visitSimpleSelectorSequence(this);
+ void visit(VisitorBase visitor) => visitor.visitSimpleSelectorSequence(this);
}
/* All other selectors (element, #id, .class, attribute, pseudo, negation,
* namespace, *) are derived from this selector.
*/
class SimpleSelector extends TreeNode {
- final _name;
+ final _name; // Wildcard, ThisOperator, Identifier, others?
SimpleSelector(this._name, Span span) : super(span);
@@ -136,7 +129,7 @@
SimpleSelector clone() => new SimpleSelector(_name, span);
- visit(VisitorBase visitor) => visitor.visitSimpleSelector(this);
+ void visit(VisitorBase visitor) => visitor.visitSimpleSelector(this);
}
// element name
@@ -319,7 +312,7 @@
NegationSelector clone() => new NegationSelector(negationArg, span);
- visit(VisitorBase visitor) => visitor.visitNegationSelector(this);
+ void visit(VisitorBase visitor) => visitor.visitNegationSelector(this);
}
class NoOp extends TreeNode {
@@ -334,7 +327,7 @@
/**
* Contains charset, ruleset, directives (media, page, etc.), and selectors.
*/
- final topLevels;
+ final List<TreeNode> topLevels;
StyleSheet(this.topLevels, Span span) : super(span) {
for (final node in topLevels) {
@@ -346,12 +339,11 @@
StyleSheet.selector(this.topLevels, Span span) : super(span);
StyleSheet clone() {
- var clonedTopLevels = [];
- clonedTopLevels.add(topLevels.clone());
+ var clonedTopLevels = topLevels.map((e) => e.clone()).toList();
return new StyleSheet(clonedTopLevels, span);
}
- visit(VisitorBase visitor) => visitor.visitStyleSheet(this);
+ void visit(VisitorBase visitor) => visitor.visitStyleSheet(this);
}
class TopLevelProduction extends TreeNode {
@@ -385,7 +377,7 @@
bool get isExtension => false; // SCSS extension?
Directive clone() => new Directive(span);
- visit(VisitorBase visitor) => visitor.visitDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitDirective(this);
}
class ImportDirective extends Directive {
@@ -405,7 +397,7 @@
return new ImportDirective(import, cloneMediaQueries, span);
}
- visit(VisitorBase visitor) => visitor.visitImportDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitImportDirective(this);
}
/**
@@ -427,7 +419,7 @@
return new MediaExpression(andOperator, _mediaFeature, clonedExprs, span);
}
- visit(VisitorBase visitor) => visitor.visitMediaExpression(this);
+ void visit(VisitorBase visitor) => visitor.visitMediaExpression(this);
}
/**
@@ -468,8 +460,8 @@
}
class MediaDirective extends Directive {
- List<MediaQuery> mediaQueries;
- List<RuleSet> rulesets;
+ final List<MediaQuery> mediaQueries;
+ final List<RuleSet> rulesets;
MediaDirective(this.mediaQueries, this.rulesets, Span span) : super(span);
@@ -484,11 +476,12 @@
}
return new MediaDirective(cloneQueries, cloneRulesets, span);
}
- visit(VisitorBase visitor) => visitor.visitMediaDirective(this);
+
+ void visit(VisitorBase visitor) => visitor.visitMediaDirective(this);
}
class HostDirective extends Directive {
- List<RuleSet> rulesets;
+ final List<RuleSet> rulesets;
HostDirective(this.rulesets, Span span) : super(span);
@@ -499,13 +492,14 @@
}
return new HostDirective(cloneRulesets, span);
}
- visit(VisitorBase visitor) => visitor.visitHostDirective(this);
+
+ void visit(VisitorBase visitor) => visitor.visitHostDirective(this);
}
class PageDirective extends Directive {
final String _ident;
final String _pseudoPage;
- List<DeclarationGroup> _declsMargin;
+ final List<DeclarationGroup> _declsMargin;
PageDirective(this._ident, this._pseudoPage, this._declsMargin,
Span span) : super(span);
@@ -517,7 +511,8 @@
}
return new PageDirective(_ident, _pseudoPage, cloneDeclsMargin, span);
}
- visit(VisitorBase visitor) => visitor.visitPageDirective(this);
+
+ void visit(VisitorBase visitor) => visitor.visitPageDirective(this);
bool get hasIdent => _ident != null && _ident.length > 0;
bool get hasPseudoPage => _pseudoPage != null && _pseudoPage.length > 0;
@@ -528,7 +523,7 @@
CharsetDirective(this.charEncoding, Span span) : super(span);
CharsetDirective clone() => new CharsetDirective(charEncoding, span);
- visit(VisitorBase visitor) => visitor.visitCharsetDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitCharsetDirective(this);
}
class KeyFrameDirective extends Directive {
@@ -536,10 +531,10 @@
* Either @keyframe or keyframe prefixed with @-webkit-, @-moz-, @-ms-, @-o-.
*/
final int _keyframeName;
- final _name;
+ final name;
final List<KeyFrameBlock> _blocks;
- KeyFrameDirective(this._keyframeName, this._name, Span span)
+ KeyFrameDirective(this._keyframeName, this.name, Span span)
: _blocks = [], super(span);
add(KeyFrameBlock block) {
@@ -557,8 +552,6 @@
}
}
- String get name => _name;
-
KeyFrameDirective clone() {
var cloneBlocks = [];
for (var block in _blocks) {
@@ -566,7 +559,7 @@
}
return new KeyFrameDirective(_keyframeName, cloneBlocks, span);
}
- visit(VisitorBase visitor) => visitor.visitKeyFrameDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitKeyFrameDirective(this);
}
class KeyFrameBlock extends Expression {
@@ -578,7 +571,7 @@
KeyFrameBlock clone() =>
new KeyFrameBlock(_blockSelectors.clone(), _declarations.clone(), span);
- visit(VisitorBase visitor) => visitor.visitKeyFrameBlock(this);
+ void visit(VisitorBase visitor) => visitor.visitKeyFrameBlock(this);
}
class FontFaceDirective extends Directive {
@@ -588,7 +581,7 @@
FontFaceDirective clone() =>
new FontFaceDirective(_declarations.clone(), span);
- visit(VisitorBase visitor) => visitor.visitFontFaceDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitFontFaceDirective(this);
}
class StyletDirective extends Directive {
@@ -610,7 +603,7 @@
}
return new StyletDirective(_dartClassName, cloneRulesets, span);
}
- visit(VisitorBase visitor) => visitor.visitStyletDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitStyletDirective(this);
}
class NamespaceDirective extends Directive {
@@ -623,7 +616,7 @@
NamespaceDirective(this._prefix, this._uri, Span span) : super(span);
NamespaceDirective clone() => new NamespaceDirective(_prefix, _uri, span);
- visit(VisitorBase visitor) => visitor.visitNamespaceDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitNamespaceDirective(this);
String get prefix => _prefix.length > 0 ? '$_prefix ' : '';
}
@@ -636,7 +629,7 @@
VarDefinitionDirective clone() =>
new VarDefinitionDirective(def.clone(), span);
- visit(VisitorBase visitor) => visitor.visitVarDefinitionDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitVarDefinitionDirective(this);
}
class MixinDefinition extends Directive {
@@ -654,7 +647,7 @@
}
return new MixinDefinition(name, cloneDefinedArgs, varArgs, span);
}
- visit(VisitorBase visitor) => visitor.visitMixinDefinition(this);
+ void visit(VisitorBase visitor) => visitor.visitMixinDefinition(this);
}
/** Support a Sass @mixin. See http://sass-lang.com for description. */
@@ -677,7 +670,7 @@
return new MixinRulesetDirective(name, clonedArgs, varArgs, clonedRulesets,
span);
}
- visit(VisitorBase visitor) => visitor.visitMixinRulesetDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitMixinRulesetDirective(this);
}
class MixinDeclarationDirective extends MixinDefinition {
@@ -694,7 +687,7 @@
return new MixinDeclarationDirective(name, clonedArgs, varArgs,
declarations.clone(), span);
}
- visit(VisitorBase visitor) => visitor.visitMixinDeclarationDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitMixinDeclarationDirective(this);
}
/** To support consuming a SASS mixin @include. */
@@ -713,21 +706,22 @@
}
return new IncludeDirective(name, cloneArgs, span);
}
- visit(VisitorBase visitor) => visitor.visitIncludeDirective(this);
+
+ void visit(VisitorBase visitor) => visitor.visitIncludeDirective(this);
}
/** To support SASS @content. */
class ContentDirective extends Directive {
ContentDirective(Span span) : super(span);
- visit(VisitorBase visitor) => visitor.visitContentDirective(this);
+ void visit(VisitorBase visitor) => visitor.visitContentDirective(this);
}
class Declaration extends TreeNode {
final Identifier _property;
final Expression _expression;
/** Style exposed to Dart. */
- var _dart;
+ dynamic _dart;
final bool important;
/**
@@ -756,7 +750,8 @@
Declaration clone() =>
new Declaration(_property.clone(), _expression.clone(), _dart, span,
important: important);
- visit(VisitorBase visitor) => visitor.visitDeclaration(this);
+
+ void visit(VisitorBase visitor) => visitor.visitDeclaration(this);
}
// TODO(terry): Consider 2 kinds of VarDefinitions static at top-level and
@@ -778,7 +773,7 @@
VarDefinition clone() =>
new VarDefinition(_property.clone(),
expression != null ? expression.clone() : null, span);
- visit(VisitorBase visitor) => visitor.visitVarDefinition(this);
+ void visit(VisitorBase visitor) => visitor.visitVarDefinition(this);
}
/**
@@ -796,7 +791,9 @@
IncludeMixinAtDeclaration clone() =>
new IncludeMixinAtDeclaration(include.clone(), span);
- visit(VisitorBase visitor) => visitor.visitIncludeMixinAtDeclaration(this);
+
+ void visit(VisitorBase visitor) =>
+ visitor.visitIncludeMixinAtDeclaration(this);
}
class ExtendDeclaration extends Declaration {
@@ -813,7 +810,7 @@
return new ExtendDeclaration(newSelector, span);
}
- visit(VisitorBase visitor) => visitor.visitExtendDeclaration(this);
+ void visit(VisitorBase visitor) => visitor.visitExtendDeclaration(this);
}
class DeclarationGroup extends TreeNode {
@@ -831,7 +828,8 @@
}
return new DeclarationGroup(clonedDecls, span);
}
- visit(VisitorBase visitor) => visitor.visitDeclarationGroup(this);
+
+ void visit(VisitorBase visitor) => visitor.visitDeclarationGroup(this);
}
class MarginGroup extends DeclarationGroup {
@@ -841,7 +839,7 @@
: super(decls, span);
MarginGroup clone() =>
new MarginGroup(margin_sym, super.clone() as dynamic, span);
- visit(VisitorBase visitor) => visitor.visitMarginGroup(this);
+ void visit(VisitorBase visitor) => visitor.visitMarginGroup(this);
}
class VarUsage extends Expression {
@@ -853,35 +851,36 @@
VarUsage clone() {
var clonedValues = [];
for (var expr in defaultValues) {
- clonedValues.addd(expr.clone());
+ clonedValues.add(expr.clone());
}
return new VarUsage(name, clonedValues, span);
}
- visit(VisitorBase visitor) => visitor.visitVarUsage(this);
+
+ void visit(VisitorBase visitor) => visitor.visitVarUsage(this);
}
class OperatorSlash extends Expression {
OperatorSlash(Span span) : super(span);
OperatorSlash clone() => new OperatorSlash(span);
- visit(VisitorBase visitor) => visitor.visitOperatorSlash(this);
+ void visit(VisitorBase visitor) => visitor.visitOperatorSlash(this);
}
class OperatorComma extends Expression {
OperatorComma(Span span) : super(span);
OperatorComma clone() => new OperatorComma(span);
- visit(VisitorBase visitor) => visitor.visitOperatorComma(this);
+ void visit(VisitorBase visitor) => visitor.visitOperatorComma(this);
}
class OperatorPlus extends Expression {
OperatorPlus(Span span) : super(span);
OperatorPlus clone() => new OperatorPlus(span);
- visit(VisitorBase visitor) => visitor.visitOperatorPlus(this);
+ void visit(VisitorBase visitor) => visitor.visitOperatorPlus(this);
}
class OperatorMinus extends Expression {
OperatorMinus(Span span) : super(span);
OperatorMinus clone() => new OperatorMinus(span);
- visit(VisitorBase visitor) => visitor.visitOperatorMinus(this);
+ void visit(VisitorBase visitor) => visitor.visitOperatorMinus(this);
}
class UnicodeRangeTerm extends Expression {
@@ -894,27 +893,27 @@
UnicodeRangeTerm clone() => new UnicodeRangeTerm(first, second, span);
- visit(VisitorBase visitor) => visitor.visitUnicodeRangeTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitUnicodeRangeTerm(this);
}
class LiteralTerm extends Expression {
// TODO(terry): value and text fields can be made final once all CSS resources
// are copied/symlink'd in the build tool and UriVisitor in
// web_ui is removed.
- var value;
+ dynamic value;
String text;
LiteralTerm(this.value, this.text, Span span) : super(span);
LiteralTerm clone() => new LiteralTerm(value, text, span);
- visit(VisitorBase visitor) => visitor.visitLiteralTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitLiteralTerm(this);
}
class NumberTerm extends LiteralTerm {
NumberTerm(value, String t, Span span) : super(value, t, span);
NumberTerm clone() => new NumberTerm(value, text, span);
- visit(VisitorBase visitor) => visitor.visitNumberTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitNumberTerm(this);
}
class UnitTerm extends LiteralTerm {
@@ -926,7 +925,7 @@
UnitTerm clone() => new UnitTerm(value, text, span, _unit);
- visit(VisitorBase visitor) => visitor.visitUnitTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitUnitTerm(this);
String unitToString() => TokenKind.unitToString(_unit);
@@ -944,25 +943,25 @@
this._unit == TokenKind.UNIT_LENGTH_PC);
}
LengthTerm clone() => new LengthTerm(value, text, span, _unit);
- visit(VisitorBase visitor) => visitor.visitLengthTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitLengthTerm(this);
}
class PercentageTerm extends LiteralTerm {
PercentageTerm(value, String t, Span span) : super(value, t, span);
PercentageTerm clone() => new PercentageTerm(value, text, span);
- visit(VisitorBase visitor) => visitor.visitPercentageTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitPercentageTerm(this);
}
class EmTerm extends LiteralTerm {
EmTerm(value, String t, Span span) : super(value, t, span);
EmTerm clone() => new EmTerm(value, text, span);
- visit(VisitorBase visitor) => visitor.visitEmTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitEmTerm(this);
}
class ExTerm extends LiteralTerm {
ExTerm(value, String t, Span span) : super(value, t, span);
ExTerm clone() => new ExTerm(value, text, span);
- visit(VisitorBase visitor) => visitor.visitExTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitExTerm(this);
}
class AngleTerm extends UnitTerm {
@@ -975,7 +974,7 @@
}
AngleTerm clone() => new AngleTerm(value, text, span, unit);
- visit(VisitorBase visitor) => visitor.visitAngleTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitAngleTerm(this);
}
class TimeTerm extends UnitTerm {
@@ -987,7 +986,7 @@
}
TimeTerm clone() => new TimeTerm(value, text, span, unit);
- visit(VisitorBase visitor) => visitor.visitTimeTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitTimeTerm(this);
}
class FreqTerm extends UnitTerm {
@@ -997,21 +996,21 @@
}
FreqTerm clone() => new FreqTerm(value, text, span, unit);
- visit(VisitorBase visitor) => visitor.visitFreqTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitFreqTerm(this);
}
class FractionTerm extends LiteralTerm {
FractionTerm(var value, String t, Span span) : super(value, t, span);
FractionTerm clone() => new FractionTerm(value, text, span);
- visit(VisitorBase visitor) => visitor.visitFractionTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitFractionTerm(this);
}
class UriTerm extends LiteralTerm {
UriTerm(String value, Span span) : super(value, value, span);
UriTerm clone() => new UriTerm(value, span);
- visit(VisitorBase visitor) => visitor.visitUriTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitUriTerm(this);
}
class ResolutionTerm extends UnitTerm {
@@ -1023,7 +1022,7 @@
}
ResolutionTerm clone() => new ResolutionTerm(value, text, span, unit);
- visit(VisitorBase visitor) => visitor.visitResolutionTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitResolutionTerm(this);
}
class ChTerm extends UnitTerm {
@@ -1033,7 +1032,7 @@
}
ChTerm clone() => new ChTerm(value, text, span, unit);
- visit(VisitorBase visitor) => visitor.visitChTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitChTerm(this);
}
class RemTerm extends UnitTerm {
@@ -1043,7 +1042,7 @@
}
RemTerm clone() => new RemTerm(value, text, span, unit);
- visit(VisitorBase visitor) => visitor.visitRemTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitRemTerm(this);
}
class ViewportTerm extends UnitTerm {
@@ -1056,7 +1055,7 @@
}
ViewportTerm clone() => new ViewportTerm(value, text, span, unit);
- visit(VisitorBase visitor) => visitor.visitViewportTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitViewportTerm(this);
}
/** Type to signal a bad hex value for HexColorTerm.value. */
@@ -1066,7 +1065,7 @@
HexColorTerm(var value, String t, Span span) : super(value, t, span);
HexColorTerm clone() => new HexColorTerm(value, text, span);
- visit(VisitorBase visitor) => visitor.visitHexColorTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitHexColorTerm(this);
}
class FunctionTerm extends LiteralTerm {
@@ -1076,7 +1075,7 @@
: super(value, t, span);
FunctionTerm clone() => new FunctionTerm(value, text, _params.clone(), span);
- visit(VisitorBase visitor) => visitor.visitFunctionTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitFunctionTerm(this);
}
/**
@@ -1087,7 +1086,7 @@
class IE8Term extends LiteralTerm {
IE8Term(Span span) : super('\\9', '\\9', span);
IE8Term clone() => new IE8Term(span);
- visit(VisitorBase visitor) => visitor.visitIE8Term(this);
+ void visit(VisitorBase visitor) => visitor.visitIE8Term(this);
}
class GroupTerm extends Expression {
@@ -1100,14 +1099,14 @@
}
GroupTerm clone() => new GroupTerm(span);
- visit(VisitorBase visitor) => visitor.visitGroupTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitGroupTerm(this);
}
class ItemTerm extends NumberTerm {
ItemTerm(var value, String t, Span span) : super(value, t, span);
ItemTerm clone() => new ItemTerm(value, text, span);
- visit(VisitorBase visitor) => visitor.visitItemTerm(this);
+ void visit(VisitorBase visitor) => visitor.visitItemTerm(this);
}
class Expressions extends Expression {
@@ -1126,7 +1125,7 @@
}
return clonedExprs;
}
- visit(VisitorBase visitor) => visitor.visitExpressions(this);
+ void visit(VisitorBase visitor) => visitor.visitExpressions(this);
}
class BinaryExpression extends Expression {
@@ -1138,7 +1137,7 @@
BinaryExpression clone() =>
new BinaryExpression(op, x.clone(), y.clone(), span);
- visit(VisitorBase visitor) => visitor.visitBinaryExpression(this);
+ void visit(VisitorBase visitor) => visitor.visitBinaryExpression(this);
}
class UnaryExpression extends Expression {
@@ -1148,7 +1147,7 @@
UnaryExpression(this.op, this.self, Span span): super(span);
UnaryExpression clone() => new UnaryExpression(op, self.clone(), span);
- visit(VisitorBase visitor) => visitor.visitUnaryExpression(this);
+ void visit(VisitorBase visitor) => visitor.visitUnaryExpression(this);
}
abstract class DartStyleExpression extends TreeNode {
@@ -1183,14 +1182,14 @@
bool isSame(DartStyleExpression other) => this._styleType == other._styleType;
- visit(VisitorBase visitor) => visitor.visitDartStyleExpression(this);
+ void visit(VisitorBase visitor) => visitor.visitDartStyleExpression(this);
}
class FontExpression extends DartStyleExpression {
Font font;
// font-style font-variant font-weight font-size/line-height font-family
- FontExpression(Span span, {var size, List<String>family,
+ FontExpression(Span span, {dynamic size, List<String>family,
int weight, String style, String variant, LineHeight lineHeight})
: super(DartStyleExpression.fontStyle, span) {
// TODO(terry): Only px/pt for now need to handle all possible units to
@@ -1224,7 +1223,7 @@
weight: font.weight, style: font.style, variant: font.variant,
lineHeight: font.lineHeight);
- visit(VisitorBase visitor) => visitor.visitFontExpression(this);
+ void visit(VisitorBase visitor) => visitor.visitFontExpression(this);
}
abstract class BoxExpression extends DartStyleExpression {
@@ -1240,7 +1239,7 @@
*/
merged(BoxExpression newDartExpr);
- visit(VisitorBase visitor) => visitor.visitBoxExpression(this);
+ void visit(VisitorBase visitor) => visitor.visitBoxExpression(this);
String get formattedBoxEdge {
if (box.top == box.left && box.top == box.bottom &&
@@ -1288,7 +1287,7 @@
new MarginExpression(span, top: box.top, right: box.right,
bottom: box.bottom, left: box.left);
- visit(VisitorBase visitor) => visitor.visitMarginExpression(this);
+ void visit(VisitorBase visitor) => visitor.visitMarginExpression(this);
}
class BorderExpression extends BoxExpression {
@@ -1324,7 +1323,7 @@
new BorderExpression(span, top: box.top, right: box.right,
bottom: box.bottom, left: box.left);
- visit(VisitorBase visitor) => visitor.visitBorderExpression(this);
+ void visit(VisitorBase visitor) => visitor.visitBorderExpression(this);
}
class HeightExpression extends DartStyleExpression {
diff --git a/lib/src/tree_base.dart b/lib/src/tree_base.dart
index 29b955d..e61a06c 100644
--- a/lib/src/tree_base.dart
+++ b/lib/src/tree_base.dart
@@ -9,14 +9,14 @@
*/
abstract class TreeNode {
/** The source code this [TreeNode] represents. */
- Span span;
+ final Span span;
- TreeNode(this.span) {}
+ TreeNode(this.span);
TreeNode clone();
/** Classic double-dispatch visitor for implementing passes. */
- visit(VisitorBase visitor);
+ void visit(VisitorBase visitor);
/** A multiline string showing the node and its children. */
String toDebugString() {
@@ -36,7 +36,7 @@
class TreeOutput {
int depth = 0;
final StringBuffer buf = new StringBuffer();
- var printer;
+ VisitorBase printer;
void write(String s) {
for (int i=0; i < depth; i++) {
@@ -77,7 +77,7 @@
writeln('${label}: ${v}');
}
- void writeList(String label, List list) {
+ void writeList(String label, List<TreeNode> list) {
write('${label}: ');
if (list == null) {
buf.write('null');
@@ -91,7 +91,7 @@
}
}
- void writeNodeList(String label, List list) {
+ void writeNodeList(String label, List<TreeNode> list) {
writeln('${label} [');
if (list != null) {
depth += 1;
diff --git a/lib/src/tree_printer.dart b/lib/src/tree_printer.dart
index 3dc2afd..8c39476 100644
--- a/lib/src/tree_printer.dart
+++ b/lib/src/tree_printer.dart
@@ -7,7 +7,7 @@
// TODO(terry): Enable class for debug only; when conditional imports enabled.
/** Helper function to dump the CSS AST. */
-String treeToDebugString(styleSheet, [bool useSpan = false]) {
+String treeToDebugString(StyleSheet styleSheet, [bool useSpan = false]) {
var to = new TreeOutput();
new _TreePrinter(to, useSpan)..visitTree(styleSheet);
return to.toString();
@@ -15,11 +15,11 @@
/** Tree dump for debug output of the CSS AST. */
class _TreePrinter extends Visitor {
- var output;
+ final TreeOutput output;
final bool useSpan;
_TreePrinter(this.output, this.useSpan) { output.printer = this; }
- void visitTree(tree) => visitStylesheet(tree);
+ void visitTree(StyleSheet tree) => visitStylesheet(tree);
void heading(String heading, node) {
if (useSpan) {
@@ -66,7 +66,7 @@
}
void visitMediaQueries(MediaQuery query) {
- output.headeing('MediaQueries');
+ output.heading('MediaQueries');
output.writeValue('unary', query.unary);
output.writeValue('media type', query.mediaType);
output.writeNodeList('media expressions', query.expressions);
@@ -111,7 +111,7 @@
heading('KeyFrameDirective', node);
output.depth++;
output.writeValue('keyframe', node.keyFrameName);
- output.writeValue('name', node._name);
+ output.writeValue('name', node.name);
output.writeNodeList('blocks', node._blocks);
output.depth--;
}
@@ -244,7 +244,7 @@
heading('Selector', node);
output.depth++;
output.writeNodeList('simpleSelectorsSequences',
- node._simpleSelectorSequences);
+ node.simpleSelectorSequences);
output.depth--;
}
diff --git a/lib/src/validate.dart b/lib/src/validate.dart
index d2301d7..d85c341 100644
--- a/lib/src/validate.dart
+++ b/lib/src/validate.dart
@@ -4,7 +4,6 @@
library csslib.src.validate;
-import 'package:csslib/parser.dart';
import 'package:csslib/visitor.dart';
import 'package:source_maps/span.dart' show Span;
diff --git a/lib/visitor.dart b/lib/visitor.dart
index 91fa714..3b20a4e 100644
--- a/lib/visitor.dart
+++ b/lib/visitor.dart
@@ -180,7 +180,7 @@
}
void visitKeyFrameDirective(KeyFrameDirective node) {
- visitIdentifier(node._name);
+ visitIdentifier(node.name);
_visitNodeList(node._blocks);
}
@@ -258,11 +258,11 @@
}
void visitSelector(Selector node) {
- _visitNodeList(node._simpleSelectorSequences);
+ _visitNodeList(node.simpleSelectorSequences);
}
void visitSimpleSelectorSequence(SimpleSelectorSequence node) {
- var selector = node._selector;
+ var selector = node.simpleSelector;
if (selector is NamespaceSelector) {
visitNamespaceSelector(selector);
} else if (selector is ElementSelector) {
diff --git a/test/debug_test.dart b/test/debug_test.dart
new file mode 100644
index 0000000..6cfea56
--- /dev/null
+++ b/test/debug_test.dart
@@ -0,0 +1,30 @@
+library debug;
+
+import 'package:unittest/unittest.dart';
+import 'testing.dart';
+
+void main() {
+ test("excercise debug", () {
+ var style = parseCss(_input);
+
+ var debugValue = style.toDebugString();
+ expect(debugValue, isNotNull);
+
+ var style2 = style.clone();
+
+ expect(style2.toDebugString(), debugValue);
+ });
+}
+
+const String _input = r'''
+.foo {
+background-color: #191919;
+width: 10PX;
+height: 22mM !important;
+border-width: 20cm;
+margin-width: 33%;
+border-height: 30EM;
+width: .6in;
+length: 1.2in;
+-web-stuff: -10Px;
+}''';
diff --git a/test/declaration_test.dart b/test/declaration_test.dart
index 3d6912c..fa14ed3 100644
--- a/test/declaration_test.dart
+++ b/test/declaration_test.dart
@@ -6,8 +6,6 @@
import 'package:unittest/unittest.dart';
import 'testing.dart';
-import 'package:csslib/parser.dart';
-import 'package:csslib/visitor.dart';
/** CSS compiler options no checks in in memory style sheet. */
diff --git a/test/error_test.dart b/test/error_test.dart
index 98acffc..935c618 100644
--- a/test/error_test.dart
+++ b/test/error_test.dart
@@ -6,8 +6,6 @@
import 'package:unittest/unittest.dart';
import 'testing.dart';
-import 'package:csslib/parser.dart';
-import 'package:csslib/visitor.dart';
import 'package:csslib/src/messages.dart';
/**
diff --git a/test/run_all.dart b/test/run_all.dart
index f57ff3e..36020cd 100644
--- a/test/run_all.dart
+++ b/test/run_all.dart
@@ -8,27 +8,28 @@
*/
library run_impl;
-import 'dart:io';
import 'package:unittest/compact_vm_config.dart';
import 'testing.dart';
+import 'big_1_test.dart' as big_1_test;
import 'compiler_test.dart' as compiler_test;
import 'declaration_test.dart' as declaration_test;
-import 'var_test.dart' as var_test;
-import 'nested_test.dart' as nested_test;
+import 'debug_test.dart' as debug_test;
import 'error_test.dart' as error_test;
-import 'selector_test.dart' as selector_test;
-import 'visitor_test.dart' as visitor_test;
-import 'mixin_test.dart' as mixin_test;
import 'extend_test.dart' as extend_test;
-import 'big_1_test.dart' as big_1_test;
+import 'mixin_test.dart' as mixin_test;
+import 'nested_test.dart' as nested_test;
+import 'selector_test.dart' as selector_test;
+import 'var_test.dart' as var_test;
+import 'visitor_test.dart' as visitor_test;
-main(List<String> arguments) {
+void main(List<String> arguments) {
var pattern = new RegExp(arguments.length > 0 ? arguments[0] : '.');
useCompactVMConfiguration();
useMockMessages();
+ if (pattern.hasMatch('debug_test.dart')) debug_test.main();
if (pattern.hasMatch('compiler_test.dart')) compiler_test.main();
if (pattern.hasMatch('declaration_test.dart')) declaration_test.main();
if (pattern.hasMatch('var_test.dart')) var_test.main();
diff --git a/test/selector_test.dart b/test/selector_test.dart
index ad015bb..f87136e 100644
--- a/test/selector_test.dart
+++ b/test/selector_test.dart
@@ -7,7 +7,6 @@
import 'package:unittest/unittest.dart';
import 'testing.dart';
import 'package:csslib/parser.dart';
-import 'package:csslib/visitor.dart';
void testSelectorSuccesses() {
var errors = [];
diff --git a/test/testing.dart b/test/testing.dart
index f15805c..168a4e5 100644
--- a/test/testing.dart
+++ b/test/testing.dart
@@ -9,7 +9,7 @@
import 'package:csslib/visitor.dart';
import 'package:csslib/src/messages.dart';
-useMockMessages() {
+void useMockMessages() {
messages = new Messages(printHandler: (message) {});
}
@@ -37,10 +37,10 @@
compileCss(input, errors: errors, polyfill: true, opts: opts);
/** CSS emitter walks the style sheet tree and emits readable CSS. */
-var _emitCss = new CssPrinter();
+final _emitCss = new CssPrinter();
/** Simple Visitor does nothing but walk tree. */
-var _cssVisitor = new Visitor();
+final _cssVisitor = new Visitor();
/** Pretty printer for CSS. */
String prettyPrint(StyleSheet ss) {
@@ -65,5 +65,3 @@
}
String dumpTree(StyleSheet ss) => treeToDebugString(ss);
-
-
diff --git a/test/visitor_test.dart b/test/visitor_test.dart
index 7fcde97..451b687 100644
--- a/test/visitor_test.dart
+++ b/test/visitor_test.dart
@@ -5,7 +5,6 @@
library visitor_test;
import 'package:unittest/unittest.dart';
-import 'package:csslib/parser.dart';
import 'package:csslib/visitor.dart';
import 'testing.dart';