git.schokokeks.org
Repositories
Help
Report an Issue
kvasir.git
Code
Commits
Branches
Tags
Suche
Strukturansicht:
d243fe8
Branches
Tags
master
kvasir.git
fontoj
kromajxoj
kromajxo_stirado.ts
pli bona laborado inter kliento kaj stirad-kromajxo
Fenris Wolf
commited
d243fe8
at 2016-08-28 23:11:36
kromajxo_stirado.ts
Blame
History
Raw
/* 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/>. */ type tipo_agoj = { anigxi ?: (kanalo : string, modo ?: boolean)=>tipo_plenumanto<Array<string>, Error>; malanigxi ?: (kanalo : string)=>tipo_plenumanto<Array<string>, Error>; listigi ?: ()=>tipo_plenumanto<Array<string>, Error>; detaloj ?: (identigilo : string)=>tipo_plenumanto<Array<string>, Error>; sxalti ?: (identigilo : string, aktiva ?: boolean)=>tipo_plenumanto<Array<string>, Error>; resxargi ?: (identigilo : string)=>tipo_plenumanto<Array<string>, Error>; aldoni ?: (nomo : string)=>tipo_plenumanto<Array<string>, Error>; elmontri_helpon ?: ()=>tipo_plenumanto<Array<string>, Error>; }; /** * @author fenris */ class klaso_kromajxo_stirado extends klaso_kromajxo { /** * @author fenris */ protected permesuloj : Array<string>; /** * @author fenris */ protected agoj : tipo_agoj; /** * @author fenris */ public constructor ( permesuloj : Array<string> = new Array<string>(), agoj : tipo_agoj ) { super ( { "identigilo": "stirado", "nomo": "Stirado", "priskribo": "stiras aliajn kromajxojn kaj elmontras informojn pri ili", "uzo": null, "auxtoro": "fenris", } ); this.permesuloj = permesuloj; this.agoj = agoj; } /** * @override * @todo la principo de "listigi" uzendas * @author fenris */ public reagi(enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void) : void { let that : klaso_kromajxo_stirado = this; function ujumi(foo : ()=>void) : void { if (that.permesuloj.indexOf(enigo_kruda["parametroj"]["sendinto"]) >= 0) { foo(); } else { eligi ( { "tipo": "mesagxo", "parametroj": { "celo": enigo_kruda["parametroj"]["fonto"], "enhavo": "vi ne rajtas fari tion", } } ); } } function eligi_(linioj : Array<string>) : void { linioj.forEach(linio => eligi({"tipo": "mesagxo", "parametroj": {"celo": enigo_kruda["parametroj"]["sendinto"], "enhavo": linio}})); } function erari(x : Error) : void { console.warn(x); } switch (enigo_kruda["tipo"]) { case "mesagxo": { let resto : string = enigo_kruda["parametroj"]["enhavo"]; [ { "skemoj": [new RegExp("^!\\s*(?:kanalo|k)\\s*(?:anigxi|a|>)\\s*(#\\S+)$")], "ago": x => ujumi(() => this.agoj.anigxi(x[0], true)(eligi_, erari)), }, { "skemoj": [new RegExp("^!\\s*(?:kanalo|k)\\s*(?:malanigxi|m|<)\\s*(#\\S+)$")], "ago": x => ujumi(() => this.agoj.anigxi(x[0], false)(eligi_, erari)), }, { "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:listigi|l)$")/*, new RegExp("$\|")*/], "ago": x => ujumi(() => this.agoj.listigi()(eligi_, erari)), }, { "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:detaloj|d|\\?)\\s*(\\w+)$")/*, new RegExp("$#(\\w+)")*/], "ago": x => this.agoj.detaloj(x[0])(eligi_, erari), }, { "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:aktivigi|a|\\+)\\s*(\\w+)$")/*, new RegExp("$\+(\\w+)")*/], "ago": x => ujumi(() => this.agoj.sxalti(x[0], true)(eligi_, erari)), }, { "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:malaktivigi|m|-)\\s*(\\w+)$")/*, new RegExp("$-(\\w+)")*/], "ago": x => ujumi(() => this.agoj.sxalti(x[0], false)(eligi_, erari)), }, { "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:sxalti|s|toggle|t|%)\\s*(\\w+)$")/*, new RegExp("$~(\\w+)")*/], "ago": x => ujumi(() => this.agoj.sxalti(x[0])(eligi_, erari)), }, { "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:resxargi|r|\\$)\\s*(\\w+)$")/*, new RegExp("$#(\\w+)")*/], "ago": x => ujumi(() => this.agoj.resxargi(x[0])(eligi_, erari)), }, { "skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:aldoni|\\*)\\s*(\\S+)$")/*, new RegExp("$\*(\\w+)")*/], "ago": x => ujumi(() => this.agoj.aldoni(x[0])(eligi_, erari)), }, { "skemoj": [new RegExp("^!\\s*(?:helpo|help|h)$")], "ago": x => this.agoj.elmontri_helpon()(eligi_, erari), }, ].forEach ( function (ero : Object) : void { ero["skemoj"].some ( function (skemo : RegExp) : boolean { let sercxo : any = resto.match(skemo); if (sercxo != null) { ero["ago"](sercxo.slice(1)); return true; } else { return false; } } ); } ); } default: { break; } } } }