/* IRC-Bot "Kvasir" Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ var _fs = require("fs"); /** * @author fenris */ class klaso_kromajxo_ekstera extends klaso_kromajxo { /** * @author fenris */ protected vojo : string; /** * @author fenris */ protected memoro : Object; /** * @author fenris */ protected reagi_ : (enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void, memoro ?: Object)=>void; /** * @author fenris */ protected starigi_ : (finado : (eraro ?: Error)=>void, memoro ?: Object)=>void; /** * @author fenris */ public constructor ( datumoj : { identigilo ?: string; nomo ?: string; priskribo ?: string; uzo ?: string; auxtoro ?: string; starigi ?: (finado : (eraro ?: Error)=>void, memoro ?: Object)=>void; reagi ?: (enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void)=>void; vojo ?: string; } = {} ) { super(datumoj); this.meti_valorojn_(datumoj, false); this.memoro = {}; } /** * @override * @author fenris */ public meti_valorojn_(datumoj : Object, ankaux_supraj : boolean = false) : void { if (ankaux_supraj) this.meti_valorojn(datumoj); this.vojo = alporti(datumoj, "vojo", null, 1); this.starigi_ = alporti<(finado : (eraro ?: Error)=>void, memoro ?: Object)=>void>(datumoj, "starigi", (finado => finado(null)), 0); this.reagi_ = alporti<(enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void)=>void>(datumoj, "reagi", null, 1); } /** * @override * @author fenris */ public starigi(finado : (eraro ?: Error)=>void) : void { this.starigi_(finado, this.memoro); } /** * @override * @author fenris */ protected reagi(enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void) : void { this.reagi_(enigo_kruda, eligi, this.memoro); } /** * @author fenris */ protected static sxargi(vojo : string, uzado : (eraro : Error, datumoj : Object)=>void) : void { _fs.readFile ( vojo, {"encoding": "utf8", "flag": "r"}, function (eraro : Error, enhavo : string) : void { if (eraro != null) { uzado(eraro, null); } else { try { let datumoj : Object = eval("(function () {return (" + enhavo + ");})()"); uzado(null, datumoj); } catch (escepto) { uzado(new Error(String(escepto)), null); } } } ); } /** * @author fenris */ public resxargi(fino : (eraro : Error)=>void = (eraro => {})) : void { let that : klaso_kromajxo_ekstera = this; klaso_kromajxo_ekstera.sxargi ( this.vojo, function (eraro : Error, datumoj : Object) : void { if (eraro != null) { fino(eraro); } else { datumoj["vojo"] = that.vojo; that.meti_valorojn_(datumoj, true); that.starigi ( function (eraro_ : Error) : void { if (eraro_ != null) { fino(eraro_); } else { fino(null); } } ); } } ); } /** * @author fenris */ public static krei(vojo : string, uzado : (eraro : Error, kromajxo : klaso_kromajxo_ekstera)=>void) : void { klaso_kromajxo_ekstera.sxargi ( vojo, function (eraro : Error, datumoj : Object) : void { if (eraro != null) { uzado(eraro, null); } else { datumoj["vojo"] = vojo; let kromajxo : klaso_kromajxo_ekstera = new klaso_kromajxo_ekstera(datumoj); uzado(null, kromajxo); } } ); } }