Index: packages/csslib/lib/src/tokenizer_base.dart |
diff --git a/packages/csslib/lib/src/tokenizer_base.dart b/packages/csslib/lib/src/tokenizer_base.dart |
index 663c987d1312265407e2e4c80cf4aaf6410eef29..c2a448fd8e209ca5f1563f19d3270db33de4b966 100644 |
--- a/packages/csslib/lib/src/tokenizer_base.dart |
+++ b/packages/csslib/lib/src/tokenizer_base.dart |
@@ -55,8 +55,7 @@ abstract class TokenizerBase { |
int _index = 0; |
int _startIndex = 0; |
- TokenizerBase(this._file, this._text, this._inString, |
- [this._index = 0]); |
+ TokenizerBase(this._file, this._text, this._inString, [this._index = 0]); |
Token next(); |
int getIdentifierKind(); |
@@ -80,9 +79,9 @@ abstract class TokenizerBase { |
} |
} |
- int _peekChar() { |
- if (_index < _text.length) { |
- return _text.codeUnitAt(_index); |
+ int _peekChar([int offset = 0]) { |
+ if (_index + offset < _text.length) { |
+ return _text.codeUnitAt(_index + offset); |
} else { |
return 0; |
} |
@@ -101,6 +100,17 @@ abstract class TokenizerBase { |
} |
} |
+ bool _nextCharsAreNumber(int first) { |
+ if (TokenizerHelpers.isDigit(first)) return true; |
+ var second = _peekChar(); |
+ if (first == TokenChar.DOT) return TokenizerHelpers.isDigit(second); |
+ if (first == TokenChar.PLUS || first == TokenChar.MINUS) { |
+ return TokenizerHelpers.isDigit(second) || |
+ (second == TokenChar.DOT && TokenizerHelpers.isDigit(_peekChar(1))); |
+ } |
+ return false; |
+ } |
+ |
Token _finishToken(int kind) { |
return new Token(kind, _file.span(_startIndex, _index)); |
} |