File size: 617 Bytes
8ede856
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import re


class CommandTokens:
    def __init__(self) -> None:
        self.tokens = []
        self.len = 0

    def get(self, idx: int) -> str | None:
        if idx >= self.len:
            return None
        return self.tokens[idx].strip()


class CommandParserMixin:
    def parse_commands(self, message: str):
        cmd_tokens = CommandTokens()
        cmd_tokens.tokens = re.split(r"\s+", message)
        cmd_tokens.len = len(cmd_tokens.tokens)
        return cmd_tokens

    def regex_match(self, message: str, command: str) -> bool:
        return re.search(command, message, re.MULTILINE) is not None