hclang
Version:
Homoiconic C: Programming without a Language
47 lines • 3.21 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 FrameArray extends FrameList {
constructor(data, meta = NilContext) {
super(data, meta);
}
string_open() {
return FrameArray.BEGIN_ARRAY;
}
;
string_close() {
return FrameArray.END_ARRAY;
}
;
in(contexts = [Frame.nil]) {
const array = this.array_eval(contexts);
return new FrameArray(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 = [];
}
}
FrameArray.BEGIN_ARRAY = '[';
FrameArray.END_ARRAY = ']';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJhbWVzL2ZyYW1lLWFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFNUMsTUFBTSxPQUFPLFVBQVcsU0FBUSxTQUFTO0lBSXZDLFlBQWEsSUFBa0IsRUFBRSxJQUFJLEdBQUcsVUFBVTtRQUNoRCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ25CLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQTtJQUMvQixDQUFDO0lBQUEsQ0FBQztJQUVLLFlBQVk7UUFDakIsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFBO0lBQzdCLENBQUM7SUFBQSxDQUFDO0lBRUssRUFBRSxDQUFFLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFTSxLQUFLLENBQUUsUUFBZSxFQUFFLFNBQWdCO1FBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUN6QjtRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVNLEVBQUUsQ0FBRSxLQUFhO1FBQ3RCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFBO1lBQ2xELE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUMvQjtRQUNELElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN4QjtRQUNELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFBO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3pCLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUE7SUFDaEIsQ0FBQzs7QUE3Q3NCLHNCQUFXLEdBQUcsR0FBRyxDQUFBO0FBQ2pCLG9CQUFTLEdBQUcsR0FBRyxDQUFBIn0=