zhang-wei-jian's picture
:rocket:
7d73cf2
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isComma = exports.TokenStore = void 0;
class TokenStore {
constructor(tokens) {
this.tokens = tokens;
}
add(token) {
this.tokens.push(token);
}
findIndexByOffset(offset) {
return this.tokens.findIndex((token) => token.range[0] <= offset && offset < token.range[1]);
}
findTokenByOffset(offset) {
return this.tokens[this.findIndexByOffset(offset)];
}
getFirstToken(nodeOrToken) {
return this.findTokenByOffset(nodeOrToken.range[0]);
}
getLastToken(nodeOrToken) {
return this.findTokenByOffset(nodeOrToken.range[1] - 1);
}
getTokenBefore(nodeOrToken, filter) {
const tokenIndex = this.findIndexByOffset(nodeOrToken.range[0]);
for (let index = tokenIndex - 1; index >= 0; index--) {
const token = this.tokens[index];
if (!filter || filter(token)) {
return token;
}
}
return null;
}
getTokenAfter(nodeOrToken, filter) {
const tokenIndex = this.findIndexByOffset(nodeOrToken.range[0]);
for (let index = tokenIndex + 1; index < this.tokens.length; index++) {
const token = this.tokens[index];
if (!filter || filter(token)) {
return token;
}
}
return null;
}
}
exports.TokenStore = TokenStore;
function isComma(token) {
return token.type === "Punctuator" && token.value === ",";
}
exports.isComma = isComma;