UNPKG

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