1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
package com.metaweb.lessen.tokens;
public class Token {
public static enum Type {
/*
* Mostly http://www.w3.org/TR/CSS2/syndata.html, with some changes
*/
Invalid,
Whitespace,
Comment,
Delimiter, // { } [ ] ( ) : ;
Operator, // ~= |=
CDataOpen, // <!--
CDataClose, // -->
Identifier, // optionally prefixed with a dash
AtIdentifier, // possibly a LESS identifier
HashName, // such as color codes
Function, // such as expression(...)
Variable, // $name or ${name}, used for substitution
String,
Uri,
Number,
Percentage,
Dimension,
UnicodeRange,
Color
}
static public String typeToString(Type type) {
switch (type) {
case Invalid: return "invalid";
case Whitespace: return "whitespace";
case Comment: return "comment";
case Delimiter: return "delimiter";
case Operator: return "operator";
case CDataOpen: return "cdata-open";
case CDataClose: return "cdata-close";
case Identifier: return "identifier";
case AtIdentifier: return "@identifier";
case HashName: return "#name";
case Function: return "function";
case Variable: return "variable";
case String: return "string";
case Uri: return "uri";
case Number: return "number";
case Percentage: return "percentage";
case Dimension: return "dimension";
case UnicodeRange: return "unicode-range";
case Color: return "color";
}
return "unknown";
}
final public Type type;
final public int start;
final public int end;
final public String text;
public Token(Type type, int start, int end, String text) {
this.type = type;
this.start = start;
this.end = end;
this.text = text;
}
@Override
public String toString() {
if (type == Type.Whitespace) {
return typeToString(type);
} else {
return typeToString(type) + ": " + text;
}
}
public String getCleanText() {
return text;
}
}
|