UNPKG

852 BJavaScriptView Raw
1/* eslint no-param-reassign: off */
2
3module.exports = {
4 interpolation(token) {
5 let first = token;
6 const tokens = [token];
7 const validTypes = ['word', '{', '}'];
8
9 token = this.tokenizer.nextToken();
10
11 // look for @{ but not @[word]{
12 if (first[1].length > 1 || token[0] !== '{') {
13 this.tokenizer.back(token);
14 return false;
15 }
16
17 while (token && validTypes.includes(token[0])) {
18 tokens.push(token);
19 token = this.tokenizer.nextToken();
20 }
21
22 const words = tokens.map((tokn) => tokn[1]);
23 [first] = tokens;
24 const last = tokens.pop();
25 const start = [first[2], first[3]];
26 const end = [last[4] || last[2], last[5] || last[3]];
27 const newToken = ['word', words.join('')].concat(start, end);
28
29 this.tokenizer.back(token);
30 this.tokenizer.back(newToken);
31
32 return true;
33 }
34};