8e10ba106e012e3c7f41b80c91c48541b81da217
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

1) /*
2) 	
3) 	IRC-Bot "Kvasir"
4)     Copyright (C) 2016	Fenris Wolf (fenris@folksprak.org)
5) 	
6)     This program is free software: you can redistribute it and/or modify
7)     it under the terms of the GNU General Public License as published by
8)     the Free Software Foundation, either version 3 of the License, or
9)     (at your option) any later version.
10) 	
11)     This program is distributed in the hope that it will be useful,
12)     but WITHOUT ANY WARRANTY; without even the implied warranty of
13)     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14)     GNU General Public License for more details.
15) 	
16)     You should have received a copy of the GNU General Public License
17)     along with this program.  If not, see <http://www.gnu.org/licenses/>.
18)        
19) */
20) 
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

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>;
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

31) };
32) 
33) 
34) /**
35)  * @author fenris
36)  */
37) class klaso_kromajxo_stirado extends klaso_kromajxo
38) {
39) 	
40) 	/**
41) 	 * @author fenris
42) 	 */
43) 	protected permesuloj : Array<string>;
44) 	
45) 	
46) 	/**
47) 	 * @author fenris
48) 	 */
49) 	protected agoj : tipo_agoj;
50) 	
51) 	
52) 	/**
53) 	 * @author fenris
54) 	 */
Fenris Wolf malgranda gxisdatigajxo

Fenris Wolf authored 7 years ago

55) 	public constructor
56) 	(
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

57) 		permesuloj : Array<string> = new Array<string>(),
58) 		agoj : tipo_agoj
59) 	)
60) 	{
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

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) 		);
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

71) 		this.permesuloj = permesuloj;
72) 		this.agoj = agoj;
73) 	}
74) 	
75) 	
76) 	/**
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

77) 	 * @override
78) 	 * @todo la principo de "listigi" uzendas
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

79) 	 * @author fenris
80) 	 */
81) 	public reagi(enigo_kruda : Object, eligi : (eligo_kruda : Object)=>void) : void
82) 	{
83) 		let that : klaso_kromajxo_stirado = this;
84) 		
85) 		function ujumi(foo : ()=>void) : void
86) 		{
87) 			if (that.permesuloj.indexOf(enigo_kruda["parametroj"]["sendinto"]) >= 0)
88) 			{
89) 				foo();
90) 			}
91) 			else
92) 			{
93) 				eligi
94) 				(
95) 					{
96) 						"tipo": "mesagxo",
97) 						"parametroj":
98) 						{
99) 							"celo": enigo_kruda["parametroj"]["fonto"],
100) 							"enhavo": "vi ne rajtas fari tion",
101) 						}
102) 					}
103) 				);
104) 			}
105) 		}
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

106) 		function eligi_(linioj : Array<string>) : void
107) 		{
Fenris Wolf pli bona apartigado inter f...

Fenris Wolf authored 7 years ago

108) 			linioj.forEach(linio => eligi({"tipo": "mesagxo", "parametroj": {"celo": enigo_kruda["parametroj"]["fonto"], "enhavo": linio}}));
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

109) 		}
110) 		function erari(x : Error) : void
111) 		{
112) 			console.warn(x);
113) 		}
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

114) 		switch (enigo_kruda["tipo"])
115) 		{
116) 			case "mesagxo":
117) 			{
118) 				let resto : string = enigo_kruda["parametroj"]["enhavo"];
119) 				[
120) 					{
Fenris Wolf fandajxo

Fenris Wolf authored 7 years ago

121) 						"skemoj": [new RegExp("^!\\s*(?:kanalo|k)\\s*(?:anigxi|a|>)\\s*(#\\S+)$")],
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

122) 						"ago": x => ujumi(() => this.agoj.anigxi(x[0], true)(eligi_, erari)),
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

123) 					},
124) 					{
Fenris Wolf fandajxo

Fenris Wolf authored 7 years ago

125) 						"skemoj": [new RegExp("^!\\s*(?:kanalo|k)\\s*(?:malanigxi|m|<)\\s*(#\\S+)$")],
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

126) 						"ago": x => ujumi(() => this.agoj.anigxi(x[0], false)(eligi_, erari)),
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

127) 					},
128) 					{
Fenris Wolf fandajxo

Fenris Wolf authored 7 years ago

129) 						"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:listigi|l)$")/*, new RegExp("$\|")*/],
Fenris Wolf pli bona apartigado inter f...

Fenris Wolf authored 7 years ago

130) 						// "ago": x => ujumi(() => this.agoj.listigi()(eligi_, erari)),
131) 						"ago": x => this.agoj.listigi()(eligi_, erari),
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

132) 					},
133) 					{
Fenris Wolf 'starigi'-metodo por kromaj...

Fenris Wolf authored 7 years ago

134) 						"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:detaloj|d|\\?)\\s*(\\w+)$")/*, new RegExp("$#(\\w+)")*/],
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

135) 						"ago": x => this.agoj.detaloj(x[0])(eligi_, erari),
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

136) 					},
137) 					{
Fenris Wolf fandajxo

Fenris Wolf authored 7 years ago

138) 						"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:aktivigi|a|\\+)\\s*(\\w+)$")/*, new RegExp("$\+(\\w+)")*/],
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

139) 						"ago": x => ujumi(() => this.agoj.sxalti(x[0], true)(eligi_, erari)),
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

140) 					},
141) 					{
Fenris Wolf fandajxo

Fenris Wolf authored 7 years ago

142) 						"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:malaktivigi|m|-)\\s*(\\w+)$")/*, new RegExp("$-(\\w+)")*/],
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

143) 						"ago": x => ujumi(() => this.agoj.sxalti(x[0], false)(eligi_, erari)),
144) 					},
145) 					{
146) 						"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:sxalti|s|toggle|t|%)\\s*(\\w+)$")/*, new RegExp("$~(\\w+)")*/],
147) 						"ago": x => ujumi(() => this.agoj.sxalti(x[0])(eligi_, erari)),
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

148) 					},
149) 					{
Fenris Wolf fandajxo

Fenris Wolf authored 7 years ago

150) 						"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:resxargi|r|\\$)\\s*(\\w+)$")/*, new RegExp("$#(\\w+)")*/],
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

151) 						"ago": x => ujumi(() => this.agoj.resxargi(x[0])(eligi_, erari)),
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

152) 					},
153) 					{
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

154) 						"skemoj": [new RegExp("^!\\s*(?:kromaĵo|kromajxo|krom|x)\\s*(?:aldoni|\\*)\\s*(\\S+)$")/*, new RegExp("$\*(\\w+)")*/],
155) 						"ago": x => ujumi(() => this.agoj.aldoni(x[0])(eligi_, erari)),
Fenris Wolf unua enmetajxo

Fenris Wolf authored 7 years ago

156) 					},
Fenris Wolf malgranda gxisdatigajxo

Fenris Wolf authored 7 years ago

157) 					{
Fenris Wolf fandajxo

Fenris Wolf authored 7 years ago

158) 						"skemoj": [new RegExp("^!\\s*(?:helpo|help|h)$")],
Fenris Wolf pli bona laborado inter kli...

Fenris Wolf authored 7 years ago

159) 						"ago": x => this.agoj.elmontri_helpon()(eligi_, erari),
Fenris Wolf malgranda gxisdatigajxo

Fenris Wolf authored 7 years ago

160) 					},