pandora/web/src/parser.ts

28 lines
No EOL
766 B
TypeScript

export class Parser {
input: string;
constructor(input: string) {
this.input = input;
}
parse(token: string, to: string): Parser {
const esc = Parser.escapeRegex(token);
const regex = new RegExp(`(^|\\s)${esc}(.+?)${esc}(?=\\s|$)`, "gs");
this.input = this.input.replace(regex, (_match, pre, inner) => {
return `${pre}${to.replace("$1", inner)}`;
});
return this;
}
replace(searchValue: string, replaceValue: string): Parser {
this.input = this.input.replaceAll(searchValue, replaceValue);
return this;
}
static escapeRegex(string: string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
}