Fenris Wolf commited on 2016-08-28 23:11:36
Zeige 8 geänderte Dateien mit 242 Einfügungen und 129 Löschungen.
| ... | ... |
@@ -39,7 +39,7 @@ function alporti<tipo_valoro>(strukturo : Object, ernomo : string, kompensajxo : |
| 39 | 39 |
} |
| 40 | 40 |
case 1: |
| 41 | 41 |
{
|
| 42 |
- let mesagxo : string = "la ero kun la nomo '" + ernomo + "' ne trovigxas en la strukturo; la kompensa valoro '" + String(kompensajxo) + " eldonitos"; |
|
| 42 |
+ let mesagxo : string = "la ero kun la nomo '" + ernomo + "' ne trovigxas en la strukturo; la kompensa valoro '" + String(kompensajxo) + "' eldonitos"; |
|
| 43 | 43 |
console.warn(mesagxo); |
| 44 | 44 |
return kompensajxo; |
| 45 | 45 |
break; |
| ... | ... |
@@ -26,7 +26,8 @@ declare var process; |
| 26 | 26 |
*/ |
| 27 | 27 |
function cxefajxo() : void |
| 28 | 28 |
{
|
| 29 |
- function malkonfesado() : void {
|
|
| 29 |
+ function malkonfesado() : void |
|
| 30 |
+ {
|
|
| 30 | 31 |
console.info("Kvasir Copyright (C) 2016 Fenris Wolf");
|
| 31 | 32 |
console.info("This program comes with ABSOLUTELY NO WARRANTY.");
|
| 32 | 33 |
console.info("This is free software, and you are welcome to redistribute it");
|
| ... | ... |
@@ -79,7 +80,7 @@ function cxefajxo() : void |
| 79 | 80 |
{
|
| 80 | 81 |
if (eraro != null) |
| 81 | 82 |
{
|
| 82 |
- throw (new Error("-- la kromajxo '" + ero["vojo"] + "' ne sxargeblas"));
|
|
| 83 |
+ throw (new Error("-- la kromajxo '" + ero["vojo"] + "' ne sxargeblas: " + String(eraro)));
|
|
| 83 | 84 |
} |
| 84 | 85 |
else |
| 85 | 86 |
{
|
| ... | ... |
@@ -78,32 +78,55 @@ abstract class klaso_kliento |
| 78 | 78 |
( |
| 79 | 79 |
permesuloj, |
| 80 | 80 |
{
|
| 81 |
- "anigxi": function (kanalo : string, modo : boolean = true) : void |
|
| 81 |
+ "anigxi": function (kanalo : string, modo : boolean = true) : tipo_plenumanto<Array<string>, Error> |
|
| 82 |
+ {
|
|
| 83 |
+ return ( |
|
| 84 |
+ (akcepti, rifuzi) => |
|
| 82 | 85 |
{
|
| 83 | 86 |
that.anigxi_rekte(kanalo, modo); |
| 87 |
+ akcepti([]); |
|
| 88 |
+ } |
|
| 89 |
+ ) |
|
| 84 | 90 |
}, |
| 85 |
- "listigi": function (celo : string) : void |
|
| 91 |
+ "listigi": function () : tipo_plenumanto<Array<string>, Error> |
|
| 92 |
+ {
|
|
| 93 |
+ return ( |
|
| 94 |
+ (akcepti, rifuzi) => |
|
| 86 | 95 |
{
|
| 87 | 96 |
let enhavo : string = Object.keys(that.kromajxoj).map(identigilo => (that.kromajxoj[identigilo].aktiva ? "+" : "-") + identigilo).join(", ");
|
| 88 |
- that.eligi(new klaso_evento_eliga_mesagxo(celo, null, enhavo)); |
|
| 97 |
+ akcepti([enhavo]); |
|
| 98 |
+ } |
|
| 99 |
+ ); |
|
| 89 | 100 |
}, |
| 90 |
- "detaloj": function (identigilo : string, celo : string) : void |
|
| 101 |
+ "detaloj": function (identigilo : string) : tipo_plenumanto<Array<string>, Error> |
|
| 102 |
+ {
|
|
| 103 |
+ return ( |
|
| 104 |
+ (akcepti, rifuzi) => |
|
| 91 | 105 |
{
|
| 92 | 106 |
if (identigilo in that.kromajxoj) |
| 93 | 107 |
{
|
| 94 | 108 |
let ero : tipo_ero = that.kromajxoj[identigilo]; |
| 95 |
- let enhavoj : Array<string> = |
|
| 109 |
+ let linioj : Array<string> = |
|
| 96 | 110 |
[ |
| 97 |
- "-- nomo: " + ero.kromajxo.nomo_legi(), |
|
| 98 |
- "-- auxtoro: " + ero.kromajxo.auxtoro_legi(), |
|
| 99 |
- "-- priskribo: " + ero.kromajxo.priskribo_legi(), |
|
| 100 |
- "-- uzo: " + ero.kromajxo.uzo_legi(), |
|
| 101 |
- "-- aktiva: " + (ero.aktiva ? "jes" : "ne"), |
|
| 102 |
- ]; |
|
| 103 |
- enhavoj.forEach(enhavo => that.eligi(new klaso_evento_eliga_mesagxo(celo, null, enhavo))); |
|
| 111 |
+ {"titolo": "nomo", "valoro": ero.kromajxo.nomo_legi()},
|
|
| 112 |
+ {"titolo": "auxtoro", "valoro": ero.kromajxo.auxtoro_legi()},
|
|
| 113 |
+ {"titolo": "priskribo", "valoro": ero.kromajxo.priskribo_legi()},
|
|
| 114 |
+ {"titolo": "uzo", "valoro": ero.kromajxo.uzo_legi()},
|
|
| 115 |
+ {"titolo": "aktiva", "valoro": (ero.aktiva ? "jes" : "ne")},
|
|
| 116 |
+ ].map(x => ("--" + " " + x.titolo + ": " + x.valoro));
|
|
| 117 |
+ akcepti(linioj); |
|
| 118 |
+ } |
|
| 119 |
+ else |
|
| 120 |
+ {
|
|
| 121 |
+ akcepti(["tia kromajxo ne ekzistas"]); |
|
| 122 |
+ } |
|
| 104 | 123 |
} |
| 124 |
+ ); |
|
| 105 | 125 |
}, |
| 106 |
- "sxalti": function (identigilo : string, aktiva : boolean = null, celo : string = null) : void |
|
| 126 |
+ "sxalti": function (identigilo : string, aktiva : boolean = null) : tipo_plenumanto<Array<string>, Error> |
|
| 127 |
+ {
|
|
| 128 |
+ return ( |
|
| 129 |
+ (akcepti, rifuzi) => |
|
| 107 | 130 |
{
|
| 108 | 131 |
if (identigilo in that.kromajxoj) |
| 109 | 132 |
{
|
| ... | ... |
@@ -111,15 +134,24 @@ abstract class klaso_kliento |
| 111 | 134 |
{
|
| 112 | 135 |
let aktiva_ : boolean = (aktiva != null) ? aktiva : (! that.kromajxoj[identigilo].aktiva); |
| 113 | 136 |
that.kromajxoj[identigilo].aktiva = aktiva_; |
| 114 |
- if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "kromajxo '" + identigilo + "' " + (aktiva_ ? "aktivigita" : "malaktivigita") + "")); |
|
| 137 |
+ akcepti(["kromajxo '" + identigilo + "' " + (aktiva_ ? "aktivigita" : "malaktivigita") + ""]); |
|
| 115 | 138 |
} |
| 116 | 139 |
else |
| 117 | 140 |
{
|
| 118 |
- if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "vi ne vere volas sxalti la stirad-kromajxon ...")); |
|
| 141 |
+ akcepti(["vi ne vere volas malsxalti la stirad-kromajxon ..."]); |
|
| 119 | 142 |
} |
| 120 | 143 |
} |
| 144 |
+ else |
|
| 145 |
+ {
|
|
| 146 |
+ akcepti(["tia kromajxo ne ekzistas"]); |
|
| 147 |
+ } |
|
| 148 |
+ } |
|
| 149 |
+ ); |
|
| 121 | 150 |
}, |
| 122 |
- "resxargi": function (identigilo : string, celo : string = null) : void |
|
| 151 |
+ "resxargi": function (identigilo : string) : tipo_plenumanto<Array<string>, Error> |
|
| 152 |
+ {
|
|
| 153 |
+ return ( |
|
| 154 |
+ (akcepti, rifuzi) => |
|
| 123 | 155 |
{
|
| 124 | 156 |
let ero : tipo_ero = that.kromajxoj[identigilo]; |
| 125 | 157 |
if (ero.kromajxo instanceof klaso_kromajxo_ekstera) |
| ... | ... |
@@ -132,19 +164,28 @@ abstract class klaso_kliento |
| 132 | 164 |
if (eraro != null) |
| 133 | 165 |
{
|
| 134 | 166 |
console.warn(eraro); |
| 135 |
- if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "resxargado fiaskis; detaloj trovigxas je la konzolo")); |
|
| 167 |
+ akcepti(["resxargado fiaskis; detaloj trovigxas je la konzolo"]); |
|
| 136 | 168 |
} |
| 137 | 169 |
else |
| 138 | 170 |
{
|
| 139 |
- if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "kromajxo '" + identigilo + "' resxargita")); |
|
| 171 |
+ akcepti(["kromajxo '" + identigilo + "' resxargita"]); |
|
| 140 | 172 |
} |
| 141 | 173 |
} |
| 142 | 174 |
); |
| 143 | 175 |
} |
| 176 |
+ else |
|
| 177 |
+ {
|
|
| 178 |
+ akcepti(["nur eksteraj kromajxoj resxargeblas"]); |
|
| 179 |
+ } |
|
| 180 |
+ } |
|
| 181 |
+ ); |
|
| 144 | 182 |
}, |
| 145 |
- "aldoni": function (nomo : string, celo : string= null) : void |
|
| 183 |
+ "aldoni": function (nomo : string) : tipo_plenumanto<Array<string>, Error> |
|
| 184 |
+ {
|
|
| 185 |
+ return ( |
|
| 186 |
+ (akcepti, rifuzi) => |
|
| 146 | 187 |
{
|
| 147 |
- if ((new RegExp("\\w")).test(nomo))
|
|
| 188 |
+ if ((new RegExp("\\S")).test(nomo))
|
|
| 148 | 189 |
{
|
| 149 | 190 |
// let vojo : string = "kromajxoj/" + nomo + ".js"; |
| 150 | 191 |
let vojo : string = nomo; |
| ... | ... |
@@ -156,7 +197,7 @@ abstract class klaso_kliento |
| 156 | 197 |
if (eraro != null) |
| 157 | 198 |
{
|
| 158 | 199 |
console.warn(eraro); |
| 159 |
- if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "aldoni kromajxon fiaskis")); |
|
| 200 |
+ akcepti(["aldoni kromajxon fiaskis"]); |
|
| 160 | 201 |
} |
| 161 | 202 |
else |
| 162 | 203 |
{
|
| ... | ... |
@@ -170,11 +211,11 @@ abstract class klaso_kliento |
| 170 | 211 |
if (eraro_ != null) |
| 171 | 212 |
{
|
| 172 | 213 |
console.warn(eraro_); |
| 173 |
- if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "aldoni kromajxon fiaskis")); |
|
| 214 |
+ akcepti(["kromajx-aldonado fiaskis"]); |
|
| 174 | 215 |
} |
| 175 | 216 |
else |
| 176 | 217 |
{
|
| 177 |
- if (celo != null) that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "kromajxo sukcese aldonita")); |
|
| 218 |
+ akcepti(["kromajxo sukcese aldonita"]); |
|
| 178 | 219 |
} |
| 179 | 220 |
} |
| 180 | 221 |
); |
| ... | ... |
@@ -182,11 +223,27 @@ abstract class klaso_kliento |
| 182 | 223 |
} |
| 183 | 224 |
); |
| 184 | 225 |
} |
| 226 |
+ else |
|
| 227 |
+ {
|
|
| 228 |
+ akcepti(["nevalida"]); |
|
| 229 |
+ } |
|
| 230 |
+ } |
|
| 231 |
+ ); |
|
| 185 | 232 |
}, |
| 186 |
- "elmontri_helpon": function (celo : string) : void |
|
| 233 |
+ "elmontri_helpon": function () : tipo_plenumanto<Array<string>, Error> |
|
| 187 | 234 |
{
|
| 188 |
- that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "'!kromajxo listigi': listigi la nomojn de cxiuj kromajxoj kaj elmontri cxu ili estas sxaltitaj")); |
|
| 189 |
- that.eligi(new klaso_evento_eliga_mesagxo(celo, null, "'!kromajxo detaloj [nomo]': elmontri detalojn pri la kromajxo kun la nomo [nomo]")); |
|
| 235 |
+ return ( |
|
| 236 |
+ (akcepti, rifuzi) => |
|
| 237 |
+ {
|
|
| 238 |
+ akcepti |
|
| 239 |
+ ( |
|
| 240 |
+ [ |
|
| 241 |
+ "'!kromajxo listigi': listigi la nomojn de cxiuj kromajxoj kaj elmontri cxu ili estas sxaltitaj", |
|
| 242 |
+ "'!kromajxo detaloj [nomo]': elmontri detalojn pri la kromajxo kun la nomo [nomo]", |
|
| 243 |
+ ] |
|
| 244 |
+ ); |
|
| 245 |
+ } |
|
| 246 |
+ ); |
|
| 190 | 247 |
}, |
| 191 | 248 |
} |
| 192 | 249 |
) |
| ... | ... |
@@ -262,10 +319,12 @@ abstract class klaso_kliento |
| 262 | 319 |
enigo, |
| 263 | 320 |
function (eligo : klaso_evento_eliga) : void |
| 264 | 321 |
{
|
| 322 |
+// console.info("--", "eniga fonto estis '" + enigo["fonto"] + "'");
|
|
| 265 | 323 |
try |
| 266 | 324 |
{
|
| 267 |
- if (enigo["fonto"].indexOf("#") < 0)
|
|
| 325 |
+ if (! enigo["fonto"].startsWith("#"))
|
|
| 268 | 326 |
{
|
| 327 |
+// console.info("--", "..., kiuj sxajne ne estas kanalo; la eliga celo estis '" + eligo["celo"] + "' kaj estos '" + enigo["sendinto"] + "' nun");
|
|
| 269 | 328 |
eligo["celo"] = enigo["sendinto"]; |
| 270 | 329 |
} |
| 271 | 330 |
} |
| ... | ... |
@@ -60,23 +60,31 @@ abstract class klaso_kromajxo |
| 60 | 60 |
*/ |
| 61 | 61 |
public constructor |
| 62 | 62 |
( |
| 63 |
- identigilo : string = null, |
|
| 64 |
- nomo : string = null, |
|
| 65 |
- priskribo : string = null, |
|
| 66 |
- uzo : string = null, |
|
| 67 |
- auxtoro : string = null |
|
| 68 |
- ) |
|
| 63 |
+ datumoj : |
|
| 69 | 64 |
{
|
| 70 |
- if (identigilo == null) |
|
| 65 |
+ identigilo ?: string; |
|
| 66 |
+ nomo ?: string; |
|
| 67 |
+ priskribo ?: string; |
|
| 68 |
+ uzo ?: string; |
|
| 69 |
+ auxtoro ?: string; |
|
| 70 |
+ } |
|
| 71 |
+ = {}
|
|
| 72 |
+ ) |
|
| 71 | 73 |
{
|
| 72 |
- identigilo = cxeno_generi("kromajxo_");
|
|
| 73 |
- console.warn("nenia identigilo donita; la jena estis generita: " + identigilo);
|
|
| 74 |
+ this.meti_valorojn(datumoj); |
|
| 74 | 75 |
} |
| 75 |
- this.identigilo = identigilo; |
|
| 76 |
- this.nomo = nomo; |
|
| 77 |
- this.priskribo = priskribo; |
|
| 78 |
- this.uzo = uzo; |
|
| 79 |
- this.auxtoro = auxtoro; |
|
| 76 |
+ |
|
| 77 |
+ |
|
| 78 |
+ /** |
|
| 79 |
+ * @author fenris |
|
| 80 |
+ */ |
|
| 81 |
+ public meti_valorojn(datumoj : Object) : void |
|
| 82 |
+ {
|
|
| 83 |
+ this.identigilo = alporti<string>(datumoj, "identigilo", cxeno_generi("kromajxo_"), 1);
|
|
| 84 |
+ this.nomo = alporti<string>(datumoj, "nomo", null, 0); |
|
| 85 |
+ this.priskribo = alporti<string>(datumoj, "priskribo", null, 0); |
|
| 86 |
+ this.uzo = alporti(datumoj, "uzo", null, 0); |
|
| 87 |
+ this.auxtoro = alporti<string>(datumoj, "auxtoro", null, 0); |
|
| 80 | 88 |
} |
| 81 | 89 |
|
| 82 | 90 |
|
| ... | ... |
@@ -126,6 +134,7 @@ abstract class klaso_kromajxo |
| 126 | 134 |
|
| 127 | 135 |
|
| 128 | 136 |
/** |
| 137 |
+ * @todo sekura respondado estus mojosa |
|
| 129 | 138 |
* @author fenris |
| 130 | 139 |
*/ |
| 131 | 140 |
public enigi(enigo : klaso_evento_eniga, eligi : (eligo : klaso_evento_eliga)=>void) : void |
| ... | ... |
@@ -136,6 +145,21 @@ abstract class klaso_kromajxo |
| 136 | 145 |
enigo.kruda_al(), |
| 137 | 146 |
eligo_kruda => eligi(klaso_evento_eliga_mesagxo.kruda_de(eligo_kruda)) |
| 138 | 147 |
) |
| 148 |
+ /* |
|
| 149 |
+ function respondi_sekure(linioj) |
|
| 150 |
+ {
|
|
| 151 |
+ if (linioj.length <= 5) |
|
| 152 |
+ {
|
|
| 153 |
+ linioj.forEach(linio => respondi({"tipo": "mesagxo", "parametroj": {"celo": enigo_kruda["parametroj"]["fonto"], "enhavo": linio}}));
|
|
| 154 |
+ } |
|
| 155 |
+ else |
|
| 156 |
+ {
|
|
| 157 |
+ var avizo = "Tro multe da rezultoj, ili senditos al vi private"; |
|
| 158 |
+ respondi({"tipo": "mesagxo", "parametroj": {"celo": enigo_kruda["parametroj"]["fonto"], "alparolato": enigo_kruda["parametroj"]["sendinto"], "enhavo": avizo}});
|
|
| 159 |
+ linioj.forEach(linio => respondi({"tipo": "mesagxo", "parametroj": {"celo": enigo_kruda["parametroj"]["sendinto"], "enhavo": linio}}));
|
|
| 160 |
+ } |
|
| 161 |
+ } |
|
| 162 |
+ */ |
|
| 139 | 163 |
} |
| 140 | 164 |
|
| 141 | 165 |
|
| ... | ... |
@@ -56,69 +56,42 @@ class klaso_kromajxo_ekstera extends klaso_kromajxo |
| 56 | 56 |
*/ |
| 57 | 57 |
public constructor |
| 58 | 58 |
( |
| 59 |
- identigilo : string = null, |
|
| 60 |
- nomo : string = null, |
|
| 61 |
- priskribo : string = null, |
|
| 62 |
- uzo : string = null, |
|
| 63 |
- auxtoro : string = null, |
|
| 64 |
- starigi_ : (finado : (eraro ?: Error)=>void, memoro ?: Object)=>void = (finado => finado(null)), |
|
| 65 |
- reagi_ : (enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void)=>void = null |
|
| 59 |
+ datumoj : |
|
| 60 |
+ {
|
|
| 61 |
+ identigilo ?: string; |
|
| 62 |
+ nomo ?: string; |
|
| 63 |
+ priskribo ?: string; |
|
| 64 |
+ uzo ?: string; |
|
| 65 |
+ auxtoro ?: string; |
|
| 66 |
+ starigi ?: (finado : (eraro ?: Error)=>void, memoro ?: Object)=>void; |
|
| 67 |
+ reagi ?: (enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void)=>void; |
|
| 68 |
+ vojo ?: string; |
|
| 69 |
+ } |
|
| 70 |
+ = {}
|
|
| 66 | 71 |
) |
| 67 | 72 |
{
|
| 68 |
- super(identigilo, nomo, priskribo, uzo, auxtoro); |
|
| 69 |
- this.starigi_ = starigi_; |
|
| 70 |
- this.reagi_ = reagi_; |
|
| 71 |
- this.vojo = null; |
|
| 73 |
+ super(datumoj); |
|
| 74 |
+ this.meti_valorojn_(datumoj, false); |
|
| 72 | 75 |
this.memoro = {};
|
| 73 | 76 |
} |
| 74 | 77 |
|
| 75 | 78 |
|
| 76 | 79 |
/** |
| 80 |
+ * @override |
|
| 77 | 81 |
* @author fenris |
| 78 | 82 |
*/ |
| 79 |
- public resxargi(fino : (eraro : Error)=>void = function (eraro : Error) : void {}) : void
|
|
| 80 |
- {
|
|
| 81 |
- let that : klaso_kromajxo_ekstera = this; |
|
| 82 |
- klaso_kromajxo_ekstera.sxargi |
|
| 83 |
- ( |
|
| 84 |
- this.vojo, |
|
| 85 |
- function (eraro : Error, datumoj : Object) : void |
|
| 86 |
- {
|
|
| 87 |
- if (eraro != null) |
|
| 88 |
- {
|
|
| 89 |
- fino(eraro); |
|
| 90 |
- } |
|
| 91 |
- else |
|
| 92 |
- {
|
|
| 93 |
- that.nomo = datumoj["nomo"]; |
|
| 94 |
- that.priskribo = datumoj["priskribo"]; |
|
| 95 |
- that.uzo = datumoj["uzo"]; |
|
| 96 |
- that.auxtoro = datumoj["auxtoro"]; |
|
| 97 |
- that.starigi_ = datumoj["starigi"]; |
|
| 98 |
- that.reagi_ = datumoj["reagi"]; |
|
| 99 |
- that.starigi |
|
| 100 |
- ( |
|
| 101 |
- function (eraro_ : Error) : void |
|
| 102 |
- {
|
|
| 103 |
- if (eraro_ != null) |
|
| 104 |
- {
|
|
| 105 |
- fino(eraro_); |
|
| 106 |
- } |
|
| 107 |
- else |
|
| 83 |
+ public meti_valorojn_(datumoj : Object, ankaux_supraj : boolean = false) : void |
|
| 108 | 84 |
{
|
| 109 |
- fino(null); |
|
| 110 |
- } |
|
| 111 |
- } |
|
| 112 |
- ); |
|
| 113 |
- } |
|
| 114 |
- } |
|
| 115 |
- ); |
|
| 85 |
+ if (ankaux_supraj) this.meti_valorojn(datumoj); |
|
| 86 |
+ this.vojo = alporti(datumoj, "vojo", null, 1); |
|
| 87 |
+ this.starigi_ = alporti<(finado : (eraro ?: Error)=>void, memoro ?: Object)=>void>(datumoj, "starigi", (finado => finado(null)), 0); |
|
| 88 |
+ this.reagi_ = alporti<(enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void)=>void>(datumoj, "reagi", null, 1); |
|
| 116 | 89 |
} |
| 117 | 90 |
|
| 118 | 91 |
|
| 119 | 92 |
/** |
| 120 |
- * @author fenris |
|
| 121 | 93 |
* @override |
| 94 |
+ * @author fenris |
|
| 122 | 95 |
*/ |
| 123 | 96 |
public starigi(finado : (eraro ?: Error)=>void) : void |
| 124 | 97 |
{
|
| ... | ... |
@@ -127,8 +100,8 @@ class klaso_kromajxo_ekstera extends klaso_kromajxo |
| 127 | 100 |
|
| 128 | 101 |
|
| 129 | 102 |
/** |
| 130 |
- * @author fenris |
|
| 131 | 103 |
* @override |
| 104 |
+ * @author fenris |
|
| 132 | 105 |
*/ |
| 133 | 106 |
protected reagi(enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void) : void |
| 134 | 107 |
{
|
| ... | ... |
@@ -168,6 +141,45 @@ class klaso_kromajxo_ekstera extends klaso_kromajxo |
| 168 | 141 |
} |
| 169 | 142 |
|
| 170 | 143 |
|
| 144 |
+ /** |
|
| 145 |
+ * @author fenris |
|
| 146 |
+ */ |
|
| 147 |
+ public resxargi(fino : (eraro : Error)=>void = (eraro => {})) : void
|
|
| 148 |
+ {
|
|
| 149 |
+ let that : klaso_kromajxo_ekstera = this; |
|
| 150 |
+ klaso_kromajxo_ekstera.sxargi |
|
| 151 |
+ ( |
|
| 152 |
+ this.vojo, |
|
| 153 |
+ function (eraro : Error, datumoj : Object) : void |
|
| 154 |
+ {
|
|
| 155 |
+ if (eraro != null) |
|
| 156 |
+ {
|
|
| 157 |
+ fino(eraro); |
|
| 158 |
+ } |
|
| 159 |
+ else |
|
| 160 |
+ {
|
|
| 161 |
+ datumoj["vojo"] = that.vojo; |
|
| 162 |
+ that.meti_valorojn_(datumoj, true); |
|
| 163 |
+ that.starigi |
|
| 164 |
+ ( |
|
| 165 |
+ function (eraro_ : Error) : void |
|
| 166 |
+ {
|
|
| 167 |
+ if (eraro_ != null) |
|
| 168 |
+ {
|
|
| 169 |
+ fino(eraro_); |
|
| 170 |
+ } |
|
| 171 |
+ else |
|
| 172 |
+ {
|
|
| 173 |
+ fino(null); |
|
| 174 |
+ } |
|
| 175 |
+ } |
|
| 176 |
+ ); |
|
| 177 |
+ } |
|
| 178 |
+ } |
|
| 179 |
+ ); |
|
| 180 |
+ } |
|
| 181 |
+ |
|
| 182 |
+ |
|
| 171 | 183 |
/** |
| 172 | 184 |
* @author fenris |
| 173 | 185 |
*/ |
| ... | ... |
@@ -184,17 +196,8 @@ class klaso_kromajxo_ekstera extends klaso_kromajxo |
| 184 | 196 |
} |
| 185 | 197 |
else |
| 186 | 198 |
{
|
| 187 |
- let kromajxo : klaso_kromajxo_ekstera = new klaso_kromajxo_ekstera |
|
| 188 |
- ( |
|
| 189 |
- datumoj["identigilo"], |
|
| 190 |
- datumoj["nomo"], |
|
| 191 |
- datumoj["priskribo"], |
|
| 192 |
- datumoj["uzo"], |
|
| 193 |
- datumoj["auxtoro"], |
|
| 194 |
- datumoj["starigi"], |
|
| 195 |
- datumoj["reagi"] |
|
| 196 |
- ); |
|
| 197 |
- kromajxo.vojo = vojo; |
|
| 199 |
+ datumoj["vojo"] = vojo; |
|
| 200 |
+ let kromajxo : klaso_kromajxo_ekstera = new klaso_kromajxo_ekstera(datumoj); |
|
| 198 | 201 |
uzado(null, kromajxo); |
| 199 | 202 |
} |
| 200 | 203 |
} |
| ... | ... |
@@ -18,15 +18,16 @@ |
| 18 | 18 |
|
| 19 | 19 |
*/ |
| 20 | 20 |
|
| 21 |
-type tipo_agoj = {
|
|
| 22 |
- anigxi ?: (kanalo : string, modo ?: boolean)=>void; |
|
| 23 |
- malanigxi ?: (kanalo : string)=>void; |
|
| 24 |
- listigi ?: (celo : string)=>void; |
|
| 25 |
- detaloj ?: (identigilo : string, celo : string)=>void; |
|
| 26 |
- sxalti ?: (identigilo : string, aktiva ?: boolean, celo ?: string)=>void; |
|
| 27 |
- resxargi ?: (identigilo : string, celo ?: string)=>void; |
|
| 28 |
- aldoni ?: (nomo : string, celo ?: string)=>void; |
|
| 29 |
- elmontri_helpon ?: (celo ?: string)=>void; |
|
| 21 |
+type tipo_agoj = |
|
| 22 |
+{
|
|
| 23 |
+ anigxi ?: (kanalo : string, modo ?: boolean)=>tipo_plenumanto<Array<string>, Error>; |
|
| 24 |
+ malanigxi ?: (kanalo : string)=>tipo_plenumanto<Array<string>, Error>; |
|
| 25 |
+ listigi ?: ()=>tipo_plenumanto<Array<string>, Error>; |
|
| 26 |
+ detaloj ?: (identigilo : string)=>tipo_plenumanto<Array<string>, Error>; |
|
| 27 |
+ sxalti ?: (identigilo : string, aktiva ?: boolean)=>tipo_plenumanto<Array<string>, Error>; |
|
| 28 |
+ resxargi ?: (identigilo : string)=>tipo_plenumanto<Array<string>, Error>; |
|
| 29 |
+ aldoni ?: (nomo : string)=>tipo_plenumanto<Array<string>, Error>; |
|
| 30 |
+ elmontri_helpon ?: ()=>tipo_plenumanto<Array<string>, Error>; |
|
| 30 | 31 |
}; |
| 31 | 32 |
|
| 32 | 33 |
|
| ... | ... |
@@ -57,13 +58,24 @@ class klaso_kromajxo_stirado extends klaso_kromajxo |
| 57 | 58 |
agoj : tipo_agoj |
| 58 | 59 |
) |
| 59 | 60 |
{
|
| 60 |
- super("stirado", "Stirado", "stiras aliajn kromajxojn kaj elmontras informojn pri ili", null, "fenris");
|
|
| 61 |
+ super |
|
| 62 |
+ ( |
|
| 63 |
+ {
|
|
| 64 |
+ "identigilo": "stirado", |
|
| 65 |
+ "nomo": "Stirado", |
|
| 66 |
+ "priskribo": "stiras aliajn kromajxojn kaj elmontras informojn pri ili", |
|
| 67 |
+ "uzo": null, |
|
| 68 |
+ "auxtoro": "fenris", |
|
| 69 |
+ } |
|
| 70 |
+ ); |
|
| 61 | 71 |
this.permesuloj = permesuloj; |
| 62 | 72 |
this.agoj = agoj; |
| 63 | 73 |
} |
| 64 | 74 |
|
| 65 | 75 |
|
| 66 | 76 |
/** |
| 77 |
+ * @override |
|
| 78 |
+ * @todo la principo de "listigi" uzendas |
|
| 67 | 79 |
* @author fenris |
| 68 | 80 |
*/ |
| 69 | 81 |
public reagi(enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void) : void |
| ... | ... |
@@ -91,6 +103,14 @@ class klaso_kromajxo_stirado extends klaso_kromajxo |
| 91 | 103 |
); |
| 92 | 104 |
} |
| 93 | 105 |
} |
| 106 |
+ function eligi_(linioj : Array<string>) : void |
|
| 107 |
+ {
|
|
| 108 |
+ linioj.forEach(linio => eligi({"tipo": "mesagxo", "parametroj": {"celo": enigo_kruda["parametroj"]["sendinto"], "enhavo": linio}}));
|
|
| 109 |
+ } |
|
| 110 |
+ function erari(x : Error) : void |
|
| 111 |
+ {
|
|
| 112 |
+ console.warn(x); |
|
| 113 |
+ } |
|
| 94 | 114 |
switch (enigo_kruda["tipo"]) |
| 95 | 115 |
{
|
| 96 | 116 |
case "mesagxo": |
| ... | ... |
@@ -99,43 +119,43 @@ class klaso_kromajxo_stirado extends klaso_kromajxo |
| 99 | 119 |
[ |
| 100 | 120 |
{
|
| 101 | 121 |
"skemoj": [new RegExp("^!\\s*(?:kanalo|k)\\s*(?:anigxi|a|>)\\s*(#\\S+)$")],
|
| 102 |
- "ago": x => ujumi(() => this.agoj.anigxi(x[0], true)), |
|
| 122 |
+ "ago": x => ujumi(() => this.agoj.anigxi(x[0], true)(eligi_, erari)), |
|
| 103 | 123 |
}, |
| 104 | 124 |
{
|
| 105 | 125 |
"skemoj": [new RegExp("^!\\s*(?:kanalo|k)\\s*(?:malanigxi|m|<)\\s*(#\\S+)$")],
|
| 106 |
- "ago": x => ujumi(() => this.agoj.anigxi(x[0], false)), |
|
| 126 |
+ "ago": x => ujumi(() => this.agoj.anigxi(x[0], false)(eligi_, erari)), |
|
| 107 | 127 |
}, |
| 108 | 128 |
{
|
| 109 | 129 |
"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:listigi|l)$")/*, new RegExp("$\|")*/],
|
| 110 |
- "ago": x => this.agoj.listigi(enigo_kruda["parametroj"]["fonto"]), |
|
| 130 |
+ "ago": x => ujumi(() => this.agoj.listigi()(eligi_, erari)), |
|
| 111 | 131 |
}, |
| 112 | 132 |
{
|
| 113 | 133 |
"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:detaloj|d|\\?)\\s*(\\w+)$")/*, new RegExp("$#(\\w+)")*/],
|
| 114 |
- "ago": x => this.agoj.detaloj(x[0], enigo_kruda["parametroj"]["fonto"]), |
|
| 115 |
- }, |
|
| 116 |
- {
|
|
| 117 |
- "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:sxalti|s|toggle|t|%)\\s*(\\w+)$")/*, new RegExp("$~(\\w+)")*/],
|
|
| 118 |
- "ago": x => ujumi(() => this.agoj.sxalti(x[0], undefined, enigo_kruda["parametroj"]["fonto"])), |
|
| 134 |
+ "ago": x => this.agoj.detaloj(x[0])(eligi_, erari), |
|
| 119 | 135 |
}, |
| 120 | 136 |
{
|
| 121 | 137 |
"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:aktivigi|a|\\+)\\s*(\\w+)$")/*, new RegExp("$\+(\\w+)")*/],
|
| 122 |
- "ago": x => ujumi(() => this.agoj.sxalti(x[0], true, enigo_kruda["parametroj"]["fonto"])), |
|
| 138 |
+ "ago": x => ujumi(() => this.agoj.sxalti(x[0], true)(eligi_, erari)), |
|
| 123 | 139 |
}, |
| 124 | 140 |
{
|
| 125 | 141 |
"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:malaktivigi|m|-)\\s*(\\w+)$")/*, new RegExp("$-(\\w+)")*/],
|
| 126 |
- "ago": x => ujumi(() => this.agoj.sxalti(x[0], false, enigo_kruda["parametroj"]["fonto"])), |
|
| 142 |
+ "ago": x => ujumi(() => this.agoj.sxalti(x[0], false)(eligi_, erari)), |
|
| 143 |
+ }, |
|
| 144 |
+ {
|
|
| 145 |
+ "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:sxalti|s|toggle|t|%)\\s*(\\w+)$")/*, new RegExp("$~(\\w+)")*/],
|
|
| 146 |
+ "ago": x => ujumi(() => this.agoj.sxalti(x[0])(eligi_, erari)), |
|
| 127 | 147 |
}, |
| 128 | 148 |
{
|
| 129 | 149 |
"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:resxargi|r|\\$)\\s*(\\w+)$")/*, new RegExp("$#(\\w+)")*/],
|
| 130 |
- "ago": x => ujumi(() => this.agoj.resxargi(x[0], enigo_kruda["parametroj"]["fonto"])), |
|
| 150 |
+ "ago": x => ujumi(() => this.agoj.resxargi(x[0])(eligi_, erari)), |
|
| 131 | 151 |
}, |
| 132 | 152 |
{
|
| 133 |
- "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:aldoni|\\*)\\s*(\\w+)$")/*, new RegExp("$\*(\\w+)")*/],
|
|
| 134 |
- "ago": x => ujumi(() => that.agoj.aldoni(x[0], enigo_kruda["parametroj"]["fonto"])), |
|
| 153 |
+ "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:aldoni|\\*)\\s*(\\S+)$")/*, new RegExp("$\*(\\w+)")*/],
|
|
| 154 |
+ "ago": x => ujumi(() => this.agoj.aldoni(x[0])(eligi_, erari)), |
|
| 135 | 155 |
}, |
| 136 | 156 |
{
|
| 137 | 157 |
"skemoj": [new RegExp("^!\\s*(?:helpo|help|h)$")],
|
| 138 |
- "ago": x => this.agoj.elmontri_helpon(enigo_kruda["parametroj"]["fonto"]), |
|
| 158 |
+ "ago": x => this.agoj.elmontri_helpon()(eligi_, erari), |
|
| 139 | 159 |
}, |
| 140 | 160 |
].forEach |
| 141 | 161 |
( |