| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 // TODO(terry): Need to be consistent with tokens either they're ASCII tokens | 5 // TODO(terry): Need to be consistent with tokens either they're ASCII tokens |
| 6 // e.g., ASTERISK or they're CSS e.g., PSEUDO, COMBINATOR_*. | 6 // e.g., ASTERISK or they're CSS e.g., PSEUDO, COMBINATOR_*. |
| 7 class TokenKind { | 7 class TokenKind { |
| 8 // Common shared tokens used in TokenizerBase. | 8 // Common shared tokens used in TokenizerBase. |
| 9 static const int UNUSED = 0; // Unused place holder... | 9 static const int UNUSED = 0; // Unused place holder... |
| 10 static const int END_OF_FILE = 1; // TODO(terry): Must match base | 10 static const int END_OF_FILE = 1; // TODO(terry): Must match base |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 | 86 |
| 87 // Uniquely synthesized tokens for CSS. | 87 // Uniquely synthesized tokens for CSS. |
| 88 static const int SELECTOR_EXPRESSION = 512; | 88 static const int SELECTOR_EXPRESSION = 512; |
| 89 static const int COMBINATOR_NONE = 513; | 89 static const int COMBINATOR_NONE = 513; |
| 90 static const int COMBINATOR_DESCENDANT = 514; // Space combinator | 90 static const int COMBINATOR_DESCENDANT = 514; // Space combinator |
| 91 static const int COMBINATOR_PLUS = 515; // + combinator | 91 static const int COMBINATOR_PLUS = 515; // + combinator |
| 92 static const int COMBINATOR_GREATER = 516; // > combinator | 92 static const int COMBINATOR_GREATER = 516; // > combinator |
| 93 static const int COMBINATOR_TILDE = 517; // ~ combinator | 93 static const int COMBINATOR_TILDE = 517; // ~ combinator |
| 94 | 94 |
| 95 static const int UNARY_OP_NONE = 518; // No unary operator present. | 95 static const int UNARY_OP_NONE = 518; // No unary operator present. |
| 96 | 96 |
| 97 // Attribute match types: | 97 // Attribute match types: |
| 98 static const int INCLUDES = 530; // '~=' | 98 static const int INCLUDES = 530; // '~=' |
| 99 static const int DASH_MATCH = 531; // '|=' | 99 static const int DASH_MATCH = 531; // '|=' |
| 100 static const int PREFIX_MATCH = 532; // '^=' | 100 static const int PREFIX_MATCH = 532; // '^=' |
| 101 static const int SUFFIX_MATCH = 533; // '$=' | 101 static const int SUFFIX_MATCH = 533; // '$=' |
| 102 static const int SUBSTRING_MATCH = 534; // '*=' | 102 static const int SUBSTRING_MATCH = 534; // '*=' |
| 103 static const int NO_MATCH = 535; // No operator. | 103 static const int NO_MATCH = 535; // No operator. |
| 104 | 104 |
| 105 // Unit types: | 105 // Unit types: |
| 106 static const int UNIT_EM = 600; | 106 static const int UNIT_EM = 600; |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 * Return the token that matches the unit ident found. | 376 * Return the token that matches the unit ident found. |
| 377 */ | 377 */ |
| 378 static int matchList(var identList, String tokenField, String text, | 378 static int matchList(var identList, String tokenField, String text, |
| 379 int offset, int length) { | 379 int offset, int length) { |
| 380 for (final entry in identList) { | 380 for (final entry in identList) { |
| 381 String ident = entry['value']; | 381 String ident = entry['value']; |
| 382 if (length == ident.length) { | 382 if (length == ident.length) { |
| 383 int idx = offset; | 383 int idx = offset; |
| 384 bool match = true; | 384 bool match = true; |
| 385 for (int identIdx = 0; identIdx < ident.length; identIdx++) { | 385 for (int identIdx = 0; identIdx < ident.length; identIdx++) { |
| 386 int identChar = ident.charCodeAt(identIdx); | 386 int identChar = ident.codeUnitAt(identIdx); |
| 387 int char = text.charCodeAt(idx++); | 387 int char = text.codeUnitAt(idx++); |
| 388 // Compare lowercase to lowercase then check if char is uppercase. | 388 // Compare lowercase to lowercase then check if char is uppercase. |
| 389 match = match && (char == identChar || | 389 match = match && (char == identChar || |
| 390 ((char >= ASCII_UPPER_A && char <= ASCII_UPPER_Z) && | 390 ((char >= ASCII_UPPER_A && char <= ASCII_UPPER_Z) && |
| 391 (char + 32) == identChar)); | 391 (char + 32) == identChar)); |
| 392 if (!match) { | 392 if (!match) { |
| 393 break; | 393 break; |
| 394 } | 394 } |
| 395 } | 395 } |
| 396 | 396 |
| 397 if (match) { | 397 if (match) { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 * value as decimal number. | 441 * value as decimal number. |
| 442 */ | 442 */ |
| 443 static int matchColorName(String text) { | 443 static int matchColorName(String text) { |
| 444 int length = text.length; | 444 int length = text.length; |
| 445 for (final entry in _EXTENDED_COLOR_NAMES) { | 445 for (final entry in _EXTENDED_COLOR_NAMES) { |
| 446 String ident = entry['name']; | 446 String ident = entry['name']; |
| 447 if (length == ident.length) { | 447 if (length == ident.length) { |
| 448 int idx = 0; | 448 int idx = 0; |
| 449 bool match = true; | 449 bool match = true; |
| 450 for (int identIdx = 0; identIdx < ident.length; identIdx++) { | 450 for (int identIdx = 0; identIdx < ident.length; identIdx++) { |
| 451 int identChar = ident.charCodeAt(identIdx); | 451 int identChar = ident.codeUnitAt(identIdx); |
| 452 int char = text.charCodeAt(idx++); | 452 int char = text.codeUnitAt(idx++); |
| 453 // Compare lowercase to lowercase then check if char is uppercase. | 453 // Compare lowercase to lowercase then check if char is uppercase. |
| 454 match = match && (char == identChar || | 454 match = match && (char == identChar || |
| 455 ((char >= ASCII_UPPER_A && char <= ASCII_UPPER_Z) && | 455 ((char >= ASCII_UPPER_A && char <= ASCII_UPPER_Z) && |
| 456 (char + 32) == identChar)); | 456 (char + 32) == identChar)); |
| 457 if (!match) { | 457 if (!match) { |
| 458 break; | 458 break; |
| 459 } | 459 } |
| 460 } | 460 } |
| 461 | 461 |
| 462 if (match) { | 462 if (match) { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 538 throw "Unknown TOKEN"; | 538 throw "Unknown TOKEN"; |
| 539 } | 539 } |
| 540 } | 540 } |
| 541 | 541 |
| 542 TokenKind() { | 542 TokenKind() { |
| 543 tokens = []; | 543 tokens = []; |
| 544 | 544 |
| 545 // All tokens must be in TokenKind order. | 545 // All tokens must be in TokenKind order. |
| 546 tokens.add(-1); // TokenKind.UNUSED | 546 tokens.add(-1); // TokenKind.UNUSED |
| 547 tokens.add(0); // TokenKind.END_OF_FILE match base | 547 tokens.add(0); // TokenKind.END_OF_FILE match base |
| 548 tokens.add(TokenKind.kindToString(TokenKind.LPAREN).charCodeAt(0)); | 548 tokens.add(TokenKind.kindToString(TokenKind.LPAREN).codeUnitAt(0)); |
| 549 tokens.add(TokenKind.kindToString(TokenKind.RPAREN).charCodeAt(0)); | 549 tokens.add(TokenKind.kindToString(TokenKind.RPAREN).codeUnitAt(0)); |
| 550 tokens.add(TokenKind.kindToString(TokenKind.LBRACK).charCodeAt(0)); | 550 tokens.add(TokenKind.kindToString(TokenKind.LBRACK).codeUnitAt(0)); |
| 551 tokens.add(TokenKind.kindToString(TokenKind.RBRACK).charCodeAt(0)); | 551 tokens.add(TokenKind.kindToString(TokenKind.RBRACK).codeUnitAt(0)); |
| 552 tokens.add(TokenKind.kindToString(TokenKind.LBRACE).charCodeAt(0)); | 552 tokens.add(TokenKind.kindToString(TokenKind.LBRACE).codeUnitAt(0)); |
| 553 tokens.add(TokenKind.kindToString(TokenKind.RBRACE).charCodeAt(0)); | 553 tokens.add(TokenKind.kindToString(TokenKind.RBRACE).codeUnitAt(0)); |
| 554 tokens.add(TokenKind.kindToString(TokenKind.DOT).charCodeAt(0)); | 554 tokens.add(TokenKind.kindToString(TokenKind.DOT).codeUnitAt(0)); |
| 555 tokens.add(TokenKind.kindToString(TokenKind.SEMICOLON).charCodeAt(0)); | 555 tokens.add(TokenKind.kindToString(TokenKind.SEMICOLON).codeUnitAt(0)); |
| 556 tokens.add(TokenKind.kindToString(TokenKind.AT).charCodeAt(0)); | 556 tokens.add(TokenKind.kindToString(TokenKind.AT).codeUnitAt(0)); |
| 557 tokens.add(TokenKind.kindToString(TokenKind.HASH).charCodeAt(0)); | 557 tokens.add(TokenKind.kindToString(TokenKind.HASH).codeUnitAt(0)); |
| 558 tokens.add(TokenKind.kindToString(TokenKind.PLUS).charCodeAt(0)); | 558 tokens.add(TokenKind.kindToString(TokenKind.PLUS).codeUnitAt(0)); |
| 559 tokens.add(TokenKind.kindToString(TokenKind.GREATER).charCodeAt(0)); | 559 tokens.add(TokenKind.kindToString(TokenKind.GREATER).codeUnitAt(0)); |
| 560 tokens.add(TokenKind.kindToString(TokenKind.TILDE).charCodeAt(0)); | 560 tokens.add(TokenKind.kindToString(TokenKind.TILDE).codeUnitAt(0)); |
| 561 tokens.add(TokenKind.kindToString(TokenKind.ASTERISK).charCodeAt(0)); | 561 tokens.add(TokenKind.kindToString(TokenKind.ASTERISK).codeUnitAt(0)); |
| 562 tokens.add(TokenKind.kindToString(TokenKind.NAMESPACE).charCodeAt(0)); | 562 tokens.add(TokenKind.kindToString(TokenKind.NAMESPACE).codeUnitAt(0)); |
| 563 tokens.add(TokenKind.kindToString(TokenKind.COLON).charCodeAt(0)); | 563 tokens.add(TokenKind.kindToString(TokenKind.COLON).codeUnitAt(0)); |
| 564 tokens.add(TokenKind.kindToString(TokenKind.PRIVATE_NAME).charCodeAt(0)); | 564 tokens.add(TokenKind.kindToString(TokenKind.PRIVATE_NAME).codeUnitAt(0)); |
| 565 tokens.add(TokenKind.kindToString(TokenKind.COMMA).charCodeAt(0)); | 565 tokens.add(TokenKind.kindToString(TokenKind.COMMA).codeUnitAt(0)); |
| 566 tokens.add(TokenKind.kindToString(TokenKind.SPACE).charCodeAt(0)); | 566 tokens.add(TokenKind.kindToString(TokenKind.SPACE).codeUnitAt(0)); |
| 567 tokens.add(TokenKind.kindToString(TokenKind.TAB).charCodeAt(0)); | 567 tokens.add(TokenKind.kindToString(TokenKind.TAB).codeUnitAt(0)); |
| 568 tokens.add(TokenKind.kindToString(TokenKind.NEWLINE).charCodeAt(0)); | 568 tokens.add(TokenKind.kindToString(TokenKind.NEWLINE).codeUnitAt(0)); |
| 569 tokens.add(TokenKind.kindToString(TokenKind.RETURN).charCodeAt(0)); | 569 tokens.add(TokenKind.kindToString(TokenKind.RETURN).codeUnitAt(0)); |
| 570 tokens.add(TokenKind.kindToString(TokenKind.PERCENT).charCodeAt(0)); | 570 tokens.add(TokenKind.kindToString(TokenKind.PERCENT).codeUnitAt(0)); |
| 571 tokens.add(TokenKind.kindToString(TokenKind.SINGLE_QUOTE).charCodeAt(0)); | 571 tokens.add(TokenKind.kindToString(TokenKind.SINGLE_QUOTE).codeUnitAt(0)); |
| 572 tokens.add(TokenKind.kindToString(TokenKind.DOUBLE_QUOTE).charCodeAt(0)); | 572 tokens.add(TokenKind.kindToString(TokenKind.DOUBLE_QUOTE).codeUnitAt(0)); |
| 573 tokens.add(TokenKind.kindToString(TokenKind.SLASH).charCodeAt(0)); | 573 tokens.add(TokenKind.kindToString(TokenKind.SLASH).codeUnitAt(0)); |
| 574 tokens.add(TokenKind.kindToString(TokenKind.EQUALS).charCodeAt(0)); | 574 tokens.add(TokenKind.kindToString(TokenKind.EQUALS).codeUnitAt(0)); |
| 575 tokens.add(TokenKind.kindToString(TokenKind.OR).charCodeAt(0)); | 575 tokens.add(TokenKind.kindToString(TokenKind.OR).codeUnitAt(0)); |
| 576 tokens.add(TokenKind.kindToString(TokenKind.CARET).charCodeAt(0)); | 576 tokens.add(TokenKind.kindToString(TokenKind.CARET).codeUnitAt(0)); |
| 577 tokens.add(TokenKind.kindToString(TokenKind.DOLLAR).charCodeAt(0)); | 577 tokens.add(TokenKind.kindToString(TokenKind.DOLLAR).codeUnitAt(0)); |
| 578 tokens.add(TokenKind.kindToString(TokenKind.LESS).charCodeAt(0)); | 578 tokens.add(TokenKind.kindToString(TokenKind.LESS).codeUnitAt(0)); |
| 579 tokens.add(TokenKind.kindToString(TokenKind.BANG).charCodeAt(0)); | 579 tokens.add(TokenKind.kindToString(TokenKind.BANG).codeUnitAt(0)); |
| 580 tokens.add(TokenKind.kindToString(TokenKind.MINUS).charCodeAt(0)); | 580 tokens.add(TokenKind.kindToString(TokenKind.MINUS).codeUnitAt(0)); |
| 581 | 581 |
| 582 assert(tokens.length == TokenKind.END_TOKENS); | 582 assert(tokens.length == TokenKind.END_TOKENS); |
| 583 } | 583 } |
| 584 | 584 |
| 585 static bool isIdentifier(int kind) { | 585 static bool isIdentifier(int kind) { |
| 586 return kind == IDENTIFIER ; | 586 return kind == IDENTIFIER ; |
| 587 } | 587 } |
| 588 | 588 |
| 589 } | 589 } |
| 590 | 590 |
| 591 class NoColorMatchException implements Exception { | 591 class NoColorMatchException implements Exception { |
| 592 String _colorName; | 592 String _colorName; |
| 593 NoColorMatchException(this._colorName); | 593 NoColorMatchException(this._colorName); |
| 594 | 594 |
| 595 String get name => _colorName; | 595 String get name => _colorName; |
| 596 } | 596 } |
| OLD | NEW |