From ce61532f3514b9acd6e9cac23da5f711cb8b2933 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Mon, 21 Dec 2020 16:04:04 +0100 Subject: [PATCH] Markdown-formatting and emojis can be disabled with a CLI Signed-off-by: Yohann D'ANELLO --- squinnondation/squinnondation.py | 42 ++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/squinnondation/squinnondation.py b/squinnondation/squinnondation.py index b5ed331..11abf8a 100644 --- a/squinnondation/squinnondation.py +++ b/squinnondation/squinnondation.py @@ -19,8 +19,8 @@ class Squinnondation: args: Any bind_address: str bind_port: int - client_address: str - client_port: int + no_emoji: bool + no_markdown: bool def parse_arguments(self) -> None: parser = ArgumentParser(description="MIRC client.") @@ -28,12 +28,14 @@ class Squinnondation: help="Address of the client.") parser.add_argument('bind_port', type=int, default=2500, help="Port of the client. Must be between 1024 and 65535.") - parser.add_argument('--client_address', type=str, default="localhost", + parser.add_argument('--client_address', type=str, default=None, help="Address of the first neighbour.") - parser.add_argument('--client_port', type=int, default=2500, + parser.add_argument('--client_port', type=int, default=0, help="Port of the first neighbour. Must be between 1024 and 65535.") - parser.add_argument('--bind-only', '-b', action='store_true', - help="Don't connect to another client, only listen to connections.") + parser.add_argument('--no-emoji', '-ne', action='store_true', + help="Don't replace emojis.") + parser.add_argument('--no-markdown', '-nm', action='store_true', + help="Don't replace emojis.") self.args = parser.parse_args() if not (1024 <= self.args.bind_port <= 65535) and (1024 <= self.args.client_port <= 65535): @@ -41,8 +43,8 @@ class Squinnondation: self.bind_address = self.args.bind_address self.bind_port = self.args.bind_port - self.client_address = self.args.client_address - self.client_port = self.args.client_port + self.no_emoji = self.args.no_emoji + self.no_markdown = self.args.no_markdown @staticmethod def main() -> None: # pragma: no cover @@ -54,13 +56,13 @@ class Squinnondation: screen.addstr(0, 0, "Enter your nickname: ") nickname = screen.getstr().decode("UTF-8") - squirrel = Squirrel(nickname, instance.bind_address, instance.bind_port) + squirrel = Squirrel(instance, nickname) squirrel.refresh_history() squirrel.refresh_input() - if not instance.args.bind_only: - hazelnut = Hazelnut(address=instance.client_address, port=instance.client_port) - squirrel.hazelnuts[(instance.client_address, instance.client_port)] = hazelnut + if instance.args.client_address and instance.args.client_port: + hazelnut = Hazelnut(address=instance.args.client_address, port=instance.args.client_port) + squirrel.hazelnuts[(instance.args.client_address, instance.args.client_port)] = hazelnut Worm(squirrel).start() @@ -375,13 +377,15 @@ class Squirrel(Hazelnut): """ The squirrel is the user of the program. It can speak with other clients, that are called hazelnuts. """ - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) + def __init__(self, instance: Squinnondation, nickname: str): + super().__init__(nickname, instance.bind_address, instance.bind_port) # Create UDP socket self.socket = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) # Bind the socket self.socket.bind((str(self.address), self.port)) + self.squinnondation = instance + self.history = [] self.history_pad = curses.newpad(curses.LINES - 2, curses.COLS) self.input_pad = curses.newpad(1, curses.COLS) @@ -439,6 +443,14 @@ class Squirrel(Hazelnut): _text_: italic ~~text~~: strikethrough """ + # Replace :emoji_name: by the good emoji + if not self.squinnondation.no_emoji: + msg = emoji.emojize(msg, use_aliases=True) + + if self.squinnondation.no_markdown: + pad.addstr(y, x, msg) + return len(msg) + underline_match = re.match("(.*)__(.*)__(.*)", msg) if underline_match: before, text, after = underline_match.group(1), underline_match.group(2), underline_match.group(3) @@ -488,8 +500,6 @@ class Squirrel(Hazelnut): len_after = self.print_markdown(pad, y, x + len_before + len_mid, after, bold, italic, underline, strike) return len_before + len_mid + len_after - # Replace :emoji_name: by the good emoji - msg = emoji.emojize(msg, use_aliases=True) size = len(msg) attrs = 0