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 |
( |