@podlite/schema
Version:
AST tools for Podlite markup language
106 lines • 2.93 kB
JavaScript
"use strict";
/**
* Default writer
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const Events = __importStar(require("events"));
class Writer extends Events.EventEmitter {
INDEXTERMS;
FOOTNOTES;
output;
errors;
out;
ons;
// write: (p: any) => void;
// getStr: () => { errors: any; toString: () => any; valueOf: () => any; };
// errors: any;
// out: any;
// startWrite: () => void;
// ons: any[];
// endWrite: () => void;
constructor(output) {
super();
// save X<> entries
this.INDEXTERMS = [];
// save N<> annotates
this.FOOTNOTES = [];
this.output = output;
this.ons = [];
this.emit('ready');
}
// escape function for output
escape(p) {
return p;
}
// write with escape special symbols
write(p) {
return this.writeRaw(this.escape(p));
}
// raw write as is
writeRaw(str) {
if ('function' === typeof this.output) {
this.output(str);
}
else {
console.log(str);
}
}
getStr() {
return {
errors: this.errors,
toString: () => this.out,
valueOf: () => this.out,
};
}
startWrite(tree) {
// setup events
;
(this.ons || []).map(a =>
//@ts-ignore
super.on(...a));
this.emit('start', tree);
this.addListener('errors', err => {
this.errors = this.errors || [];
this.errors.push(err);
});
}
on(...params) {
// overload 'on' method for reverse setup handlers
this.ons = this.ons || [];
this.ons.unshift([...params]);
return this;
}
endWrite = () => {
this.emit('end');
};
// nesting methods
_add_nesting(n) { }
_remove_nesting(n) { }
addLevel(n) {
this._add_nesting(n);
}
removeLevel(n) {
this._remove_nesting(n);
}
}
exports.default = Writer;
//# sourceMappingURL=writer.js.map