|
12345678910111213141516171819202122232425262728293031323334 |
- /* eslint no-param-reassign: off */
-
- module.exports = {
- interpolation(token) {
- let first = token;
- const tokens = [token];
- const validTypes = ['word', '{', '}'];
-
- token = this.tokenizer.nextToken();
-
- // look for @{ but not @[word]{
- if (first[1].length > 1 || token[0] !== '{') {
- this.tokenizer.back(token);
- return false;
- }
-
- while (token && validTypes.includes(token[0])) {
- tokens.push(token);
- token = this.tokenizer.nextToken();
- }
-
- const words = tokens.map((tokn) => tokn[1]);
- [first] = tokens;
- const last = tokens.pop();
- const start = [first[2], first[3]];
- const end = [last[4] || last[2], last[5] || last[3]];
- const newToken = ['word', words.join('')].concat(start, end);
-
- this.tokenizer.back(token);
- this.tokenizer.back(newToken);
-
- return true;
- }
- };
|