| 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 | 3 |
| 4 class TagStack { | 4 class TagStack { |
| 5 List<ASTNode> _stack; | 5 List<ASTNode> _stack; |
| 6 | 6 |
| 7 TagStack(var elem) : _stack = [] { | 7 TagStack(var elem) : _stack = [] { |
| 8 _stack.add(elem); | 8 _stack.add(elem); |
| 9 } | 9 } |
| 10 | 10 |
| (...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 if (_previousToken.kind == TokenKind.GREATER_THAN) { | 665 if (_previousToken.kind == TokenKind.GREATER_THAN) { |
| 666 // If the next token is } could be the close template token. If user | 666 // If the next token is } could be the close template token. If user |
| 667 // needs } as token in text node use the entity &125; | 667 // needs } as token in text node use the entity &125; |
| 668 // TODO(terry): Probably need a &RCURLY entity instead of 125. | 668 // TODO(terry): Probably need a &RCURLY entity instead of 125. |
| 669 if (_peek() == TokenKind.ERROR) { | 669 if (_peek() == TokenKind.ERROR) { |
| 670 // Backup, just past previous token, & rescan we're outside of the tag. | 670 // Backup, just past previous token, & rescan we're outside of the tag. |
| 671 tokenizer.index = _previousToken.end; | 671 tokenizer.index = _previousToken.end; |
| 672 _next(false); | 672 _next(false); |
| 673 } else if (_peek() != TokenKind.RBRACE) { | 673 } else if (_peek() != TokenKind.RBRACE) { |
| 674 // Yes, grab the chars after the > | 674 // Yes, grab the chars after the > |
| 675 stringValue.add(_previousToken.source.text.substring( | 675 stringValue.write(_previousToken.source.text.substring( |
| 676 this._previousToken.end, this._peekToken.start)); | 676 this._previousToken.end, this._peekToken.start)); |
| 677 } | 677 } |
| 678 } | 678 } |
| 679 | 679 |
| 680 // Gobble up everything until we hit < | 680 // Gobble up everything until we hit < |
| 681 while (_peek() != TokenKind.LESS_THAN && | 681 while (_peek() != TokenKind.LESS_THAN && |
| 682 _peek() != TokenKind.START_COMMAND && | 682 _peek() != TokenKind.START_COMMAND && |
| 683 _peek() != TokenKind.END_COMMAND && | 683 _peek() != TokenKind.END_COMMAND && |
| 684 (_peek() != TokenKind.RBRACE || | 684 (_peek() != TokenKind.RBRACE || |
| 685 (_peek() == TokenKind.RBRACE && inExpression)) && | 685 (_peek() == TokenKind.RBRACE && inExpression)) && |
| (...skipping 13 matching lines...) Expand all Loading... |
| 699 var tok = _next(false); | 699 var tok = _next(false); |
| 700 if (tok.kind == TokenKind.RBRACE && inExpression) { | 700 if (tok.kind == TokenKind.RBRACE && inExpression) { |
| 701 // We have an expression create the expression node, don't save the } | 701 // We have an expression create the expression node, don't save the } |
| 702 inExpression = false; | 702 inExpression = false; |
| 703 nodes.add(new TemplateExpression(stringValue.toString(), | 703 nodes.add(new TemplateExpression(stringValue.toString(), |
| 704 _makeSpan(start))); | 704 _makeSpan(start))); |
| 705 stringValue = new StringBuffer(); | 705 stringValue = new StringBuffer(); |
| 706 start = _peekToken.start; | 706 start = _peekToken.start; |
| 707 } else if (tok.kind != TokenKind.START_EXPRESSION) { | 707 } else if (tok.kind != TokenKind.START_EXPRESSION) { |
| 708 // Only save the the contents between ${ and } | 708 // Only save the the contents between ${ and } |
| 709 stringValue.add(tok.text); | 709 stringValue.write(tok.text); |
| 710 } | 710 } |
| 711 } | 711 } |
| 712 | 712 |
| 713 if (stringValue.length > 0) { | 713 if (stringValue.length > 0) { |
| 714 nodes.add(new TemplateText(stringValue.toString(), _makeSpan(start))); | 714 nodes.add(new TemplateText(stringValue.toString(), _makeSpan(start))); |
| 715 } | 715 } |
| 716 | 716 |
| 717 return nodes; | 717 return nodes; |
| 718 } | 718 } |
| 719 | 719 |
| 720 } | 720 } |
| OLD | NEW |