Revision 13e86181
Added by Vincent Le Goff over 4 years ago
src/client.py | ||
---|---|---|
100 | 100 |
if text.startswith("#"): |
101 | 101 |
self.sharp_engine.execute(text) |
102 | 102 |
else: |
103 |
self.client.write(text) |
|
103 |
# Test the aliases |
|
104 |
for alias in self.world.aliases: |
|
105 |
if alias.test(text): |
|
106 |
return |
|
107 |
|
|
108 |
self.client.write(text + "\r\n") |
|
104 | 109 |
|
105 | 110 |
|
106 | 111 |
class GUIClient(Client): |
src/scripting/alias.py | ||
---|---|---|
1 |
# Copyright (c) 2016, LE GOFF Vincent |
|
2 |
# All rights reserved. |
|
3 |
|
|
4 |
# Redistribution and use in source and binary forms, with or without |
|
5 |
# modification, are permitted provided that the following conditions are met: |
|
6 |
|
|
7 |
# * Redistributions of source code must retain the above copyright notice, this |
|
8 |
# list of conditions and the following disclaimer. |
|
9 |
|
|
10 |
# * Redistributions in binary form must reproduce the above copyright notice, |
|
11 |
# this list of conditions and the following disclaimer in the documentation |
|
12 |
# and/or other materials provided with the distribution. |
|
13 |
|
|
14 |
# * Neither the name of ytranslate nor the names of its |
|
15 |
# contributors may be used to endorse or promote products derived from |
|
16 |
# this software without specific prior written permission. |
|
17 |
|
|
18 |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
19 |
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
20 |
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|
21 |
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
|
22 |
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
23 |
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
|
24 |
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
|
25 |
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
|
26 |
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
27 |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
28 |
|
|
29 |
"""Class containing the Alias class.""" |
|
30 |
|
|
31 |
import re |
|
32 |
|
|
33 |
class Alias: |
|
34 |
|
|
35 |
"""An alias object. |
|
36 |
|
|
37 |
In a MUD client terminology, an alias is here to speed up command |
|
38 |
inputs by associating a certain (short) command with a desired |
|
39 |
input. For instance, "co" could be associated with "crew order". |
|
40 |
|
|
41 |
""" |
|
42 |
|
|
43 |
def __init__(self, sharp, alias, action): |
|
44 |
self.sharp_engine = sharp |
|
45 |
self.alias = alias |
|
46 |
self.re_alias = self.find_regex(alias) |
|
47 |
self.action = action |
|
48 |
|
|
49 |
# Set the alias's level |
|
50 |
self.level = sharp.engine.level |
|
51 |
|
|
52 |
def __repr__(self): |
|
53 |
return "<Alias for {} (level={})>".format( |
|
54 |
repr(self.alias), self.level.name) |
|
55 |
|
|
56 |
def find_regex(self, alias): |
|
57 |
"""Find and compile the alias given as argument. |
|
58 |
|
|
59 |
If the alias begins with '^', the alias is already a |
|
60 |
regular expression that just needs to be compiled. Otherwise, |
|
61 |
some automatic actions will be performed on it. |
|
62 |
|
|
63 |
""" |
|
64 |
if alias.startswith("^"): |
|
65 |
return re.compile(alias) |
|
66 |
|
|
67 |
alias = re.escape(alias) |
|
68 |
|
|
69 |
# The '*' sign will be replaced by a group |
|
70 |
alias = alias.replace("\\*", "(.*?)") |
|
71 |
alias = "^" + alias + "$" |
|
72 |
|
|
73 |
return re.compile(alias, re.IGNORECASE) |
|
74 |
|
|
75 |
def test(self, command): |
|
76 |
"""Should the alias be triggered by the text?""" |
|
77 |
if self.re_alias.search(command): |
|
78 |
self.execute() |
|
79 |
return True |
|
80 |
|
|
81 |
return False |
|
82 |
|
|
83 |
def execute(self): |
|
84 |
"""Execute the alias.""" |
|
85 |
self.sharp_engine.execute(self.action) |
src/sharp/__init__.py | ||
---|---|---|
1 | 1 |
"""Package containing the sharp script.""" |
2 | 2 |
|
3 | 3 |
from sharp.function import Function |
4 |
from sharp.functions.alias import Alias |
|
4 | 5 |
from sharp.functions.macro import Macro |
5 | 6 |
from sharp.functions.play import Play |
6 | 7 |
from sharp.functions.say import Say |
... | ... | |
8 | 9 |
from sharp.functions.tts import TTS |
9 | 10 |
|
10 | 11 |
FUNCTIONS = { |
12 |
"alias": Alias, |
|
11 | 13 |
"macro": Macro, |
12 | 14 |
"play": Play, |
13 | 15 |
"say": Say, |
src/sharp/functions/alias.py | ||
---|---|---|
1 |
# Copyright (c) 2016, LE GOFF Vincent |
|
2 |
# All rights reserved. |
|
3 |
|
|
4 |
# Redistribution and use in source and binary forms, with or without |
|
5 |
# modification, are permitted provided that the following conditions are met: |
|
6 |
|
|
7 |
# * Redistributions of source code must retain the above copyright notice, this |
|
8 |
# list of conditions and the following disclaimer. |
|
9 |
|
|
10 |
# * Redistributions in binary form must reproduce the above copyright notice, |
|
11 |
# this list of conditions and the following disclaimer in the documentation |
|
12 |
# and/or other materials provided with the distribution. |
|
13 |
|
|
14 |
# * Neither the name of ytranslate nor the names of its |
|
15 |
# contributors may be used to endorse or promote products derived from |
|
16 |
# this software without specific prior written permission. |
|
17 |
|
|
18 |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
19 |
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
20 |
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|
21 |
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
|
22 |
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
23 |
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
|
24 |
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
|
25 |
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
|
26 |
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
27 |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
28 |
|
|
29 |
"""Module containing the Alias function class.""" |
|
30 |
|
|
31 |
from scripting.alias import Alias as ObjAlias |
|
32 |
from sharp import Function |
|
33 |
|
|
34 |
class Alias(Function): |
|
35 |
|
|
36 |
"""Function SharpScript 'alias'.""" |
|
37 |
|
|
38 |
def run(self, alias, action): |
|
39 |
"""Create an alias.""" |
|
40 |
alias = ObjAlias(self.sharp_engine, alias, action) |
|
41 |
if self.world: |
|
42 |
self.world.aliases.append(alias) |
src/ui/window.py | ||
---|---|---|
215 | 215 |
self.password.Clear() |
216 | 216 |
encoding = self.engine.settings["options.general.encoding"] |
217 | 217 |
msg = event.GetString().encode(encoding, "replace") |
218 |
self.client.write(msg + "\r\n")
|
|
218 |
self.client.write(msg) |
|
219 | 219 |
|
220 | 220 |
# Write in the history |
221 | 221 |
if event.GetEventObject() == self.input: |
src/world.py | ||
---|---|---|
56 | 56 |
self.sharp_engine = None |
57 | 57 |
|
58 | 58 |
# World's configuration |
59 |
self.aliases = [] |
|
59 | 60 |
self.macros = [] |
60 | 61 |
self.triggers = [] |
61 | 62 |
|
Also available in: Unified diff
Add the aliases