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