@@ -45,25 +45,52 @@ module.exports.prototype = {
4545 check : function ( file , errors ) {
4646 file . iterateNodesByType ( 'TemplateLiteral' , function ( node ) {
4747 var first = file . getFirstNodeToken ( node ) ;
48- var nextFist = file . getNextToken ( first , { includeWhitespace : true } ) ;
4948 var last = file . getLastNodeToken ( node ) ;
50- var prevLast = file . getPrevToken ( last , { includeWhitespace : true } ) ;
5149
52- if ( nextFist . isWhitespace ) {
53- errors . assert . noWhitespaceBetween ( {
54- token : first ,
55- nextToken : file . getNextToken ( first ) ,
56- message : 'Illegal space after "${"'
57- } ) ;
58- }
50+ // Iterate over tokens inside TemplateLiteral node.
51+ for ( var token = first ; ; token = file . getNextToken ( token ) ) {
52+ if ( containsPlaceholderStart ( token ) ) {
53+ var nextFist = file . getNextToken ( token , { includeWhitespace : true } ) ;
54+ if ( nextFist . isWhitespace ) {
55+ errors . assert . noWhitespaceBetween ( {
56+ token : token ,
57+ nextToken : file . getNextToken ( token ) ,
58+ message : 'Illegal space after "${"'
59+ } ) ;
60+ }
61+ }
62+
63+ if ( containsPlaceholderEnd ( token ) ) {
64+ var prevLast = file . getPrevToken ( token , { includeWhitespace : true } ) ;
65+ if ( prevLast . isWhitespace ) {
66+ errors . assert . noWhitespaceBetween ( {
67+ token : file . getPrevToken ( token ) ,
68+ nextToken : token ,
69+ message : 'Illegal space before "}"'
70+ } ) ;
71+ }
72+ }
5973
60- if ( prevLast . isWhitespace ) {
61- errors . assert . noWhitespaceBetween ( {
62- token : file . getPrevToken ( last ) ,
63- nextToken : last ,
64- message : 'Illegal space before "}"'
65- } ) ;
74+ if ( token === last ) {
75+ return ;
76+ }
6677 }
6778 } ) ;
6879 }
6980} ;
81+
82+ /**
83+ * @param {Object } token
84+ * @returns {Boolean }
85+ */
86+ function containsPlaceholderStart ( token ) {
87+ return token . type === 'Template' && / \$ { $ / . test ( token . value ) ;
88+ }
89+
90+ /**
91+ * @param {Object } token
92+ * @returns {Boolean }
93+ */
94+ function containsPlaceholderEnd ( token ) {
95+ return token . type === 'Template' && / ^ } / . test ( token . value ) ;
96+ }
0 commit comments