aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-02-09 17:49:01 +0000
committerGravatar jesopo2019-02-09 17:49:01 +0000
commit6b042d94605509e74ad5a9621d5d9027b8fced4e (patch)
tree2ec3ea312442d1111e782401f64d6881adebcd1e /modules
parentAdd an `-L` argument to start.py, to explicity specify log level (diff)
signature
Split command StdOut/StdErr in to their own file (commands)
Diffstat (limited to 'modules')
-rw-r--r--modules/commands/__init__.py (renamed from modules/commands.py)67
-rw-r--r--modules/commands/outs.py61
2 files changed, 66 insertions, 62 deletions
diff --git a/modules/commands.py b/modules/commands/__init__.py
index 4dd3634d..b604925d 100644
--- a/modules/commands.py
+++ b/modules/commands/__init__.py
@@ -1,5 +1,6 @@
import re
from src import EventManager, ModuleManager, utils
+from . import outs
STR_MORE = "%s (more...)" % utils.consts.RESET
STR_CONTINUED = "(...continued) "
@@ -12,64 +13,6 @@ OUT_CUTOFF = 400
REGEX_CUTOFF = re.compile(r"^.{1,%d}(?:\s|$)" % OUT_CUTOFF)
REGEX_ARG_NUMBER = re.compile(r"\$(\d+)")
-class Out(object):
- def __init__(self, server, module_name, target, msgid, statusmsg):
- self.server = server
- self.module_name = module_name
- self._hide_prefix = False
- self.target = target
- self._text = ""
- self.written = False
- self._msgid = msgid
- self._statusmsg = statusmsg
-
- def write(self, text):
- self._text += text
- self.written = True
- return self
-
- def send(self, method):
- if self.has_text():
- text = self._text
- text_encoded = text.encode("utf8")
- if len(text_encoded) > OUT_CUTOFF:
- text = "%s%s" % (text_encoded[:OUT_CUTOFF].decode("utf8"
- ).rstrip(), STR_MORE)
- self._text = "%s%s" % (STR_CONTINUED, text_encoded[OUT_CUTOFF:
- ].decode("utf8").lstrip())
- else:
- self._text = ""
-
- tags = {}
- if self._msgid:
- tags["+draft/reply"] = self._msgid
-
- prefix = ""
- if not self._hide_prefix:
- prefix = utils.consts.RESET + "[%s] " % self.prefix()
-
- target_str = "%s%s" % (self._statusmsg, self.target.name)
- full_text = "%s%s" % (prefix, text)
- if method == "PRIVMSG":
- self.server.send_message(target_str, full_text, tags=tags)
- elif method == "NOTICE":
- self.server.send_notice(target_str, full_text, tags=tags)
-
- def set_prefix(self, prefix):
- self.module_name = prefix
- def hide_prefix(self):
- self._hide_prefix = True
-
- def has_text(self):
- return bool(self._text)
-
-class StdOut(Out):
- def prefix(self):
- return utils.irc.color(self.module_name, utils.consts.GREEN)
-class StdErr(Out):
- def prefix(self):
- return utils.irc.color("!"+self.module_name, utils.consts.RED)
-
def _command_method_validate(s):
if s.upper() in COMMAND_METHODS:
return s.upper()
@@ -174,9 +117,9 @@ class Module(ModuleManager.BaseModule):
msgid = event["tags"].get("draft/msgid", None)
statusmsg = "".join(event.get("statusmsg", []))
- stdout = StdOut(event["server"], module_name, target, msgid,
+ stdout = outs.StdOut(event["server"], module_name, target, msgid,
statusmsg)
- stderr = StdErr(event["server"], module_name, target, msgid,
+ stderr = outs.StdErr(event["server"], module_name, target, msgid,
statusmsg)
command_method = self._command_method(target, event["server"])
@@ -390,7 +333,7 @@ class Module(ModuleManager.BaseModule):
@utils.hook("send.stdout")
def send_stdout(self, event):
- stdout = StdOut(event["server"], event["module_name"],
+ stdout = outs.StdOut(event["server"], event["module_name"],
event["target"], event.get("msgid", None),
event.get("statusmsg", ""))
@@ -403,7 +346,7 @@ class Module(ModuleManager.BaseModule):
event["target"].last_stdout = stdout
@utils.hook("send.stderr")
def send_stderr(self, event):
- stderr = StdErr(event["server"], event["module_name"],
+ stderr = outs.StdErr(event["server"], event["module_name"],
event["target"], event.get("msgid", None),
event.get("statusmsg", ""))
diff --git a/modules/commands/outs.py b/modules/commands/outs.py
new file mode 100644
index 00000000..6d9efe38
--- /dev/null
+++ b/modules/commands/outs.py
@@ -0,0 +1,61 @@
+from src import utils
+
+class Out(object):
+ def __init__(self, server, module_name, target, msgid, statusmsg):
+ self.server = server
+ self.module_name = module_name
+ self._hide_prefix = False
+ self.target = target
+ self._text = ""
+ self.written = False
+ self._msgid = msgid
+ self._statusmsg = statusmsg
+
+ def write(self, text):
+ self._text += text
+ self.written = True
+ return self
+
+ def send(self, method):
+ if self.has_text():
+ text = self._text
+ text_encoded = text.encode("utf8")
+ if len(text_encoded) > OUT_CUTOFF:
+ text = "%s%s" % (text_encoded[:OUT_CUTOFF].decode("utf8"
+ ).rstrip(), STR_MORE)
+ self._text = "%s%s" % (STR_CONTINUED, text_encoded[OUT_CUTOFF:
+ ].decode("utf8").lstrip())
+ else:
+ self._text = ""
+
+
+ tags = {}
+ if self._msgid:
+ tags["+draft/reply"] = self._msgid
+
+ prefix = ""
+ if not self._hide_prefix:
+ prefix = utils.consts.RESET + "[%s] " % self.prefix()
+
+ target_str = "%s%s" % (self._statusmsg, self.target.name)
+ full_text = "%s%s" % (prefix, text)
+ if method == "PRIVMSG":
+ self.server.send_message(target_str, full_text, tags=tags)
+ elif method == "NOTICE":
+ self.server.send_notice(target_str, full_text, tags=tags)
+
+ def set_prefix(self, prefix):
+ self.module_name = prefix
+ def hide_prefix(self):
+ self._hide_prefix = True
+
+ def has_text(self):
+ return bool(self._text)
+
+class StdOut(Out):
+ def prefix(self):
+ return utils.irc.color(self.module_name, utils.consts.GREEN)
+class StdErr(Out):
+ def prefix(self):
+ return utils.irc.color("!"+self.module_name, utils.consts.RED)
+