| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of csslib.parser; | 5 part of csslib.parser; |
| 6 | 6 |
| 7 class Tokenizer extends TokenizerBase { | 7 class Tokenizer extends TokenizerBase { |
| 8 /** U+ prefix for unicode characters. */ | 8 /** U+ prefix for unicode characters. */ |
| 9 final UNICODE_U = 'U'.codeUnitAt(0); | 9 final UNICODE_U = 'U'.codeUnitAt(0); |
| 10 final UNICODE_LOWER_U = 'u'.codeUnitAt(0); | 10 final UNICODE_LOWER_U = 'u'.codeUnitAt(0); |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 ? TokenKind.IMPORTANT | 253 ? TokenKind.IMPORTANT |
| 254 : -1; | 254 : -1; |
| 255 } | 255 } |
| 256 | 256 |
| 257 return tokId >= 0 ? tokId : TokenKind.IDENTIFIER; | 257 return tokId >= 0 ? tokId : TokenKind.IDENTIFIER; |
| 258 } | 258 } |
| 259 | 259 |
| 260 Token finishIdentifier() { | 260 Token finishIdentifier() { |
| 261 // If we encounter an escape sequence, remember it so we can post-process | 261 // If we encounter an escape sequence, remember it so we can post-process |
| 262 // to unescape. | 262 // to unescape. |
| 263 var chars = []; | 263 var chars = <int>[]; |
| 264 | 264 |
| 265 // backup so we can start with the first character | 265 // backup so we can start with the first character |
| 266 int validateFrom = _index; | 266 int validateFrom = _index; |
| 267 _index = _startIndex; | 267 _index = _startIndex; |
| 268 while (_index < _text.length) { | 268 while (_index < _text.length) { |
| 269 int ch = _text.codeUnitAt(_index); | 269 int ch = _text.codeUnitAt(_index); |
| 270 | 270 |
| 271 // If the previous character was "\" we need to escape. T | 271 // If the previous character was "\" we need to escape. T |
| 272 // http://www.w3.org/TR/CSS21/syndata.html#characters | 272 // http://www.w3.org/TR/CSS21/syndata.html#characters |
| 273 // if followed by hexadecimal digits, create the appropriate character. | 273 // if followed by hexadecimal digits, create the appropriate character. |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 // http://www.w3.org/TR/CSS21/syndata.html#characters | 447 // http://www.w3.org/TR/CSS21/syndata.html#characters |
| 448 // Also, escaped character should be allowed. | 448 // Also, escaped character should be allowed. |
| 449 c == 95 /*_*/ || c >= 0xA0 || c == 92 /*\*/); | 449 c == 95 /*_*/ || c >= 0xA0 || c == 92 /*\*/); |
| 450 } | 450 } |
| 451 | 451 |
| 452 /** Pseudo function expressions identifiers can't have a minus sign. */ | 452 /** Pseudo function expressions identifiers can't have a minus sign. */ |
| 453 static bool isIdentifierPartExpr(int c) { | 453 static bool isIdentifierPartExpr(int c) { |
| 454 return (isIdentifierStartExpr(c) || isDigit(c)); | 454 return (isIdentifierStartExpr(c) || isDigit(c)); |
| 455 } | 455 } |
| 456 } | 456 } |
| OLD | NEW |