virtual-star/lib/struct/context.js
2025-04-21 21:46:30 -04:00

50 lines
1003 B
JavaScript

import { Variable } from "./variable.js";
export class Context {
variables;
constructor(vars) {
if(vars) {
this.variables = vars.map(v => new Variable(v.key, v.value));
} else {
this.variables = [];
}
}
copy() {
return new Context(this.variables);
}
hasVariable(key) {
return this.variables.some(
(v) => v.key === key
);
}
get(key) {
const match = this.variables.find(
(v) => v.key === key
);
return match?.value ?? "";
}
set(key, value) {
const withoutOld = this.variables.filter(
(v) => v.key !== key
);
this.variables = [
...withoutOld,
new Variable(key, value)
];
}
mergeFrom(other) {
for(let i = 0; i < other.variables.length; i++) {
this.set(other.variables[i].key, other.variables[i].value);
}
return this;
}
}