dddc84d7 |
/*
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 <http://www.gnu.org/licenses/>.
*/
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
*/
public constructor
(
identigilo : string = null,
nomo : string = null,
priskribo : string = null,
auxtoro : string = null,
reagi_ : (enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void)=>void
)
{
super(identigilo, nomo, priskribo, auxtoro);
this.reagi_ = reagi_;
this.vojo = null;
this.memoro = {};
}
/**
* @author fenris
*/
public resxargi(fino : (eraro : Error)=>void = function (eraro : Error) : void {}) : 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
{
that.nomo = datumoj["nomo"];
that.priskribo = datumoj["priskribo"];
that.auxtoro = datumoj["auxtoro"];
that.reagi_ = datumoj["reagi"];
fino(null);
}
}
);
}
/**
* @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 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
{
let kromajxo : klaso_kromajxo_ekstera = new klaso_kromajxo_ekstera
(
datumoj["identigilo"],
datumoj["nomo"],
datumoj["priskribo"],
datumoj["auxtoro"],
datumoj["reagi"]
);
kromajxo.vojo = vojo;
uzado(null, kromajxo);
}
}
);
}
}
|