File: Token.java

package info (click to toggle)
liblessen-java 1.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 276 kB
  • sloc: java: 2,981; xml: 31; makefile: 5
file content (90 lines) | stat: -rw-r--r-- 2,399 bytes parent folder | download
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;
    }
}