This repository has been archived on 2020-11-02. You can view files and clone it, but cannot push or open issues or pull requests.
2020-11-01 22:46:04 +00:00

35 lines
852 B
JavaScript

/* 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;
}
};