in batik-css/src/main/java/org/apache/batik/css/parser/Scanner.java [914:1239]
protected int numberUnit(boolean integer) throws IOException {
switch (current) {
case '%':
nextChar();
return LexicalUnits.PERCENTAGE;
case 'c':
case 'C':
switch(nextChar()) {
case 'm':
case 'M':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.CM;
default:
while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
nextChar();
}
return LexicalUnits.DIMENSION;
}
case 'd':
case 'D':
switch(nextChar()) {
case 'e':
case 'E':
switch(nextChar()) {
case 'g':
case 'G':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.DEG;
}
default:
while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
nextChar();
}
return LexicalUnits.DIMENSION;
}
case 'e':
case 'E':
switch(nextChar()) {
case 'm':
case 'M':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.EM;
case 'x':
case 'X':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.EX;
default:
while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
nextChar();
}
return LexicalUnits.DIMENSION;
}
case 'g':
case 'G':
switch(nextChar()) {
case 'r':
case 'R':
switch(nextChar()) {
case 'a':
case 'A':
switch(nextChar()) {
case 'd':
case 'D':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.GRAD;
}
}
default:
while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
nextChar();
}
return LexicalUnits.DIMENSION;
}
case 'h':
case 'H':
nextChar();
switch(current) {
case 'z':
case 'Z':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.HZ;
default:
while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
nextChar();
}
return LexicalUnits.DIMENSION;
}
case 'i':
case 'I':
switch(nextChar()) {
case 'n':
case 'N':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.IN;
default:
while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
nextChar();
}
return LexicalUnits.DIMENSION;
}
case 'k':
case 'K':
switch(nextChar()) {
case 'h':
case 'H':
switch(nextChar()) {
case 'z':
case 'Z':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.KHZ;
}
default:
while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
nextChar();
}
return LexicalUnits.DIMENSION;
}
case 'm':
case 'M':
switch(nextChar()) {
case 'm':
case 'M':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.MM;
case 's':
case 'S':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.MS;
default:
while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
nextChar();
}
return LexicalUnits.DIMENSION;
}
case 'p':
case 'P':
switch(nextChar()) {
case 'c':
case 'C':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.PC;
case 't':
case 'T':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.PT;
case 'x':
case 'X':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.PX;
default:
while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
nextChar();
}
return LexicalUnits.DIMENSION;
}
case 'r':
case 'R':
switch(nextChar()) {
case 'a':
case 'A':
switch(nextChar()) {
case 'd':
case 'D':
nextChar();
if (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter
((char)current));
return LexicalUnits.DIMENSION;
}
return LexicalUnits.RAD;
}
default:
while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current)) {
nextChar();
}
return LexicalUnits.DIMENSION;
}
case 's':
case 'S':
nextChar();
return LexicalUnits.S;
default:
if (current != -1 &&
ScannerUtilities.isCSSIdentifierStartCharacter
((char)current)) {
do {
nextChar();
} while (current != -1 &&
ScannerUtilities.isCSSNameCharacter((char)current));
return LexicalUnits.DIMENSION;
}
return (integer) ? LexicalUnits.INTEGER : LexicalUnits.REAL;
}
}