1
- import { $$ , $0 , $9 , $A , $AMPERSAND , $AT , $BACKSLASH , $BANG , $CARET , $COLON , $COMMA , $CR , $DQ , $EOF , $EQ , $FF , $GT , $HASH , $LBRACE , $LBRACKET , $LF , $LPAREN , $MINUS , $PERCENT , $PERIOD , $PIPE , $PLUS , $QUESTION , $RBRACE , $RBRACKET , $RPAREN , $SEMICOLON , $SLASH , $SQ , $STAR , $TILDA , $VTAB , $Z , $_ , $a , $z , isWhitespace } from '@angular/compiler/src /chars' ;
1
+ import { $$ , $0 , $9 , $A , $AMPERSAND , $AT , $BACKSLASH , $BANG , $CARET , $COLON , $COMMA , $CR , $DQ , $EOF , $EQ , $FF , $GT , $HASH , $LBRACE , $LBRACKET , $LF , $LPAREN , $MINUS , $PERCENT , $PERIOD , $PIPE , $PLUS , $QUESTION , $RBRACE , $RBRACKET , $RPAREN , $SEMICOLON , $SLASH , $SQ , $STAR , $TILDA , $VTAB , $Z , $_ , $a , $z , isWhitespace } from '.. /chars' ;
2
2
3
3
import { BaseException } from '../facade/exceptions' ;
4
- import { NumberWrapper , StringWrapper , isPresent , resolveEnumToken } from '../facade/lang' ;
4
+ import { StringWrapper , isPresent , resolveEnumToken } from '../facade/lang' ;
5
5
6
- export { $AT , $COLON , $COMMA , $EOF , $LBRACE , $LBRACKET , $LPAREN , $RBRACE , $RBRACKET , $RPAREN , $SEMICOLON , isWhitespace } from '@angular/compiler/src /chars' ;
6
+ export { $AT , $COLON , $COMMA , $EOF , $GT , $ LBRACE, $LBRACKET , $LPAREN , $PLUS , $ RBRACE, $RBRACKET , $RPAREN , $SEMICOLON , $SLASH , $SPACE , $TAB , $TILDA , isWhitespace } from '.. /chars' ;
7
7
8
8
export enum CssTokenType {
9
9
EOF ,
@@ -23,6 +23,7 @@ export enum CssLexerMode {
23
23
ALL_TRACK_WS ,
24
24
SELECTOR ,
25
25
PSEUDO_SELECTOR ,
26
+ PSEUDO_SELECTOR_WITH_ARGUMENTS ,
26
27
ATTRIBUTE_SELECTOR ,
27
28
AT_RULE_QUERY ,
28
29
MEDIA_QUERY ,
@@ -94,6 +95,7 @@ export class CssScannerError extends BaseException {
94
95
function _trackWhitespace ( mode : CssLexerMode ) {
95
96
switch ( mode ) {
96
97
case CssLexerMode . SELECTOR :
98
+ case CssLexerMode . PSEUDO_SELECTOR :
97
99
case CssLexerMode . ALL_TRACK_WS :
98
100
case CssLexerMode . STYLE_VALUE :
99
101
return true ;
@@ -126,7 +128,7 @@ export class CssScanner {
126
128
127
129
setMode ( mode : CssLexerMode ) {
128
130
if ( this . _currentMode != mode ) {
129
- if ( _trackWhitespace ( this . _currentMode ) ) {
131
+ if ( _trackWhitespace ( this . _currentMode ) && ! _trackWhitespace ( mode ) ) {
130
132
this . consumeWhitespace ( ) ;
131
133
}
132
134
this . _currentMode = mode ;
@@ -178,21 +180,25 @@ export class CssScanner {
178
180
179
181
consume ( type : CssTokenType , value : string = null ) : LexedCssResult {
180
182
var mode = this . _currentMode ;
181
- this . setMode ( CssLexerMode . ALL ) ;
183
+
184
+ this . setMode ( _trackWhitespace ( mode ) ? CssLexerMode . ALL_TRACK_WS : CssLexerMode . ALL ) ;
182
185
183
186
var previousIndex = this . index ;
184
187
var previousLine = this . line ;
185
188
var previousColumn = this . column ;
186
189
190
+ var next : CssToken ;
187
191
var output = this . scan ( ) ;
192
+ if ( isPresent ( output ) ) {
193
+ // just incase the inner scan method returned an error
194
+ if ( isPresent ( output . error ) ) {
195
+ this . setMode ( mode ) ;
196
+ return output ;
197
+ }
188
198
189
- // just incase the inner scan method returned an error
190
- if ( isPresent ( output . error ) ) {
191
- this . setMode ( mode ) ;
192
- return output ;
199
+ next = output . token ;
193
200
}
194
201
195
- var next = output . token ;
196
202
if ( ! isPresent ( next ) ) {
197
203
next = new CssToken ( 0 , 0 , 0 , CssTokenType . EOF , 'end of file' ) ;
198
204
}
@@ -563,6 +569,8 @@ function isValidSelectorCharacter(code: number): boolean {
563
569
case $COLON :
564
570
case $PIPE :
565
571
case $COMMA :
572
+ case $LBRACKET :
573
+ case $RBRACKET :
566
574
return true ;
567
575
default :
568
576
return false ;
@@ -658,7 +666,7 @@ function isValidCssCharacter(code: number, mode: CssLexerMode): boolean {
658
666
case CssLexerMode . SELECTOR :
659
667
return isValidSelectorCharacter ( code ) ;
660
668
661
- case CssLexerMode . PSEUDO_SELECTOR :
669
+ case CssLexerMode . PSEUDO_SELECTOR_WITH_ARGUMENTS :
662
670
return isValidPseudoSelectorCharacter ( code ) ;
663
671
664
672
case CssLexerMode . ATTRIBUTE_SELECTOR :
0 commit comments