hclang
Version:
Homoiconic C: Programming without a Language
47 lines • 3.22 kB
JavaScript
import { Frame } from './frame.js';
import { FrameList } from './frame-list.js';
import { FrameNote } from './frame-note.js';
import { NilContext } from './meta-frame.js';
export class FrameSchema extends FrameList {
constructor(data, meta = NilContext) {
super(data, meta);
}
string_open() {
return FrameSchema.BEGIN_SCHEMA;
}
;
string_close() {
return FrameSchema.END_SCHEMA;
}
;
in(contexts = [Frame.nil]) {
const array = this.array_eval(contexts);
return new FrameSchema(array);
}
apply(argument, parameter) {
if (!argument.is.void) {
this.data.push(argument);
}
return this;
}
at(index) {
if (index >= this.size() || -index > this.size()) {
const source = '[0..' + this.size() + '].' + index;
return FrameNote.index(source);
}
if (index >= 0) {
return this.data[index];
}
const n = this.data.length;
return this.data[n + index];
}
length() {
return this.data.length;
}
reset() {
this.data = [];
}
}
FrameSchema.BEGIN_SCHEMA = '<';
FrameSchema.END_SCHEMA = '>';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZyYW1lcy9mcmFtZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU1QyxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFJeEMsWUFBYSxJQUFrQixFQUFFLElBQUksR0FBRyxVQUFVO1FBQ2hELEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDbkIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxXQUFXLENBQUMsWUFBWSxDQUFBO0lBQ2pDLENBQUM7SUFBQSxDQUFDO0lBRUssWUFBWTtRQUNqQixPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUE7SUFDL0IsQ0FBQztJQUFBLENBQUM7SUFFSyxFQUFFLENBQUUsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZDLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBRSxRQUFlLEVBQUUsU0FBZ0I7UUFDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQ3pCO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRU0sRUFBRSxDQUFFLEtBQWE7UUFDdEIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUE7WUFDbEQsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQy9CO1FBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ3hCO1FBQ0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDekIsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUNoQixDQUFDOztBQTdDc0Isd0JBQVksR0FBRyxHQUFHLENBQUE7QUFDbEIsc0JBQVUsR0FBRyxHQUFHLENBQUEifQ==