Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: packages/csslib/lib/src/tokenizer.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « packages/csslib/lib/src/property.dart ('k') | packages/csslib/lib/src/tokenizer_base.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/csslib/lib/src/tokenizer.dart
diff --git a/packages/csslib/lib/src/tokenizer.dart b/packages/csslib/lib/src/tokenizer.dart
index d423104bae92eb05e5a278fb249e603021de8486..d7677f9f211501f1c1564d1de483debc016f9ef7 100644
--- a/packages/csslib/lib/src/tokenizer.dart
+++ b/packages/csslib/lib/src/tokenizer.dart
@@ -97,7 +97,7 @@ class Tokenizer extends TokenizerBase {
case TokenChar.HASH:
return _finishToken(TokenKind.HASH);
case TokenChar.PLUS:
- if (maybeEatDigit()) return finishNumber();
+ if (_nextCharsAreNumber(ch)) return finishNumber();
return _finishToken(TokenKind.PLUS);
case TokenChar.MINUS:
if (inSelectorExpression || unicodeRange) {
@@ -105,7 +105,7 @@ class Tokenizer extends TokenizerBase {
// not part of identifier e.g., interval value range (e.g. U+400-4ff)
// or minus operator in selector expression.
return _finishToken(TokenKind.MINUS);
- } else if (maybeEatDigit()) {
+ } else if (_nextCharsAreNumber(ch)) {
return finishNumber();
} else if (TokenizerHelpers.isIdentifierStart(ch)) {
return finishIdentifier();
@@ -202,8 +202,13 @@ class Tokenizer extends TokenizerBase {
} else {
return _errorToken();
}
- } else if ((ch == UNICODE_U || ch == UNICODE_LOWER_U) &&
+ } else if (_inString &&
+ (ch == UNICODE_U || ch == UNICODE_LOWER_U) &&
(_peekChar() == UNICODE_PLUS)) {
+ // `_inString` is misleading. We actually DON'T want to enter this
+ // block while tokenizing a string, but the parser sets this value to
+ // false while it IS consuming tokens within a string.
+ //
// Unicode range: U+uNumber[-U+uNumber]
// uNumber = 0..10FFFF
_nextChar(); // Skip +
@@ -260,7 +265,7 @@ class Tokenizer extends TokenizerBase {
Token finishIdentifier() {
// If we encounter an escape sequence, remember it so we can post-process
// to unescape.
- var chars = [];
+ var chars = <int>[];
// backup so we can start with the first character
int validateFrom = _index;
@@ -414,7 +419,6 @@ class Tokenizer extends TokenizerBase {
}
}
}
- return _errorToken();
}
}
@@ -446,7 +450,9 @@ class TokenizerHelpers {
// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
// http://www.w3.org/TR/CSS21/syndata.html#characters
// Also, escaped character should be allowed.
- c == 95 /*_*/ || c >= 0xA0 || c == 92 /*\*/);
+ c == 95 /*_*/ ||
+ c >= 0xA0 ||
+ c == 92 /*\*/);
}
/** Pseudo function expressions identifiers can't have a minus sign. */
« no previous file with comments | « packages/csslib/lib/src/property.dart ('k') | packages/csslib/lib/src/tokenizer_base.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698