hclang
Version:
Homoiconic C: Programming without a Language
39 lines • 2.79 kB
JavaScript
import { Frame } from './frame.js';
import { FrameExpr } from './frame-expr.js';
import { NilContext } from './meta-frame.js';
export class FrameLazy extends FrameExpr {
constructor(data, meta = NilContext) {
super(data, meta);
}
string_open() {
return FrameLazy.LAZY_BEGIN;
}
;
string_close() {
return FrameLazy.LAZY_END;
}
;
in(contexts = [Frame.nil]) {
if (this.data.length === 0) {
return this;
}
const expr = new FrameExpr(this.data, this.meta_for(contexts[0]));
expr.up = this;
return expr;
}
call(argument, parameter = Frame.nil) {
return new FrameExpr(argument.asArray(), this.meta_for(argument));
}
meta_for(context) {
const MetaNew = this.meta_copy();
const pairs = context.meta_pairs();
pairs.forEach(([key, value]) => {
MetaNew[key] = value;
});
return MetaNew;
}
}
FrameLazy.LAZY_BEGIN = '{';
FrameLazy.LAZY_END = '}';
;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtbGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtbGF6eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXBFLE1BQU0sT0FBTyxTQUFVLFNBQVEsU0FBUztJQUl0QyxZQUFhLElBQWtCLEVBQUUsT0FBZ0IsVUFBVTtRQUN6RCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ25CLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQTtJQUM3QixDQUFDO0lBQUEsQ0FBQztJQUVLLFlBQVk7UUFDakIsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFBO0lBQzNCLENBQUM7SUFBQSxDQUFDO0lBRUssRUFBRSxDQUFFLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQ2QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRU0sSUFBSSxDQUFFLFFBQWUsRUFBRSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUc7UUFDakQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFUyxRQUFRLENBQUUsT0FBYztRQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDaEMsTUFBTSxLQUFLLEdBQXlCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUN4RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ3RCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQzs7QUFuQ3NCLG9CQUFVLEdBQUcsR0FBRyxDQUFBO0FBQ2hCLGtCQUFRLEdBQUcsR0FBRyxDQUFBO0FBbUN0QyxDQUFDIn0=