You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.0 KiB
102 lines
2.0 KiB
3 weeks ago
|
# This file is a part of Teflon.
|
||
|
|
||
|
|
||
|
class Format(object):
|
||
|
pass
|
||
|
|
||
|
|
||
|
class Message(object):
|
||
|
|
||
|
def __init__(self, contents: list):
|
||
|
self.contents = contents
|
||
|
self.server = None
|
||
|
|
||
|
|
||
|
class Cell(object):
|
||
|
|
||
|
def __init__(self, content: str, args=None):
|
||
|
self.content = content
|
||
|
self.args = args or []
|
||
|
|
||
|
def add_arg(self, arg):
|
||
|
self.args.append(arg)
|
||
|
|
||
|
|
||
|
class Row(object):
|
||
|
|
||
|
def __init__(self, cells=None):
|
||
|
self._cells = cells or []
|
||
|
|
||
|
def add_cell(self, cell: Cell):
|
||
|
self._cells.append(cell)
|
||
|
|
||
|
def get_cells(self) -> list:
|
||
|
return self._cells
|
||
|
|
||
|
|
||
|
class TableFormat(Format):
|
||
|
|
||
|
def __init__(self, rows: int, cols: int, rows_=None):
|
||
|
self.rows = rows
|
||
|
self.cols = cols
|
||
|
self._rows = rows_ or []
|
||
|
|
||
|
def add_row(self, row: Row):
|
||
|
self._rows.append(row)
|
||
|
|
||
|
def get_rows(self) -> list:
|
||
|
return self._rows
|
||
|
|
||
|
|
||
|
class Text(object):
|
||
|
|
||
|
def __init__(self, content, args=None):
|
||
|
self.content = content
|
||
|
self.args = args or []
|
||
|
|
||
|
def add_arg(self, arg):
|
||
|
self.args.append(arg)
|
||
|
|
||
|
|
||
|
class LineFormat(Format):
|
||
|
|
||
|
def __init__(self, text=None):
|
||
|
self.text = text or []
|
||
|
|
||
|
def add_text(self, text):
|
||
|
self.text.append(text)
|
||
|
|
||
|
|
||
|
class Content(object):
|
||
|
|
||
|
def __init__(self, head: str = "", body: str = "", footer: str ="\n"):
|
||
|
self.head = head
|
||
|
# body is a list of Body joined with EOL
|
||
|
self.body = body
|
||
|
self.footer = footer
|
||
|
|
||
|
|
||
|
class Connection(object):
|
||
|
|
||
|
"""
|
||
|
Common connection interface
|
||
|
"""
|
||
|
def __init__(self, name: str):
|
||
|
self.name = name
|
||
|
self._notify_methods = []
|
||
|
|
||
|
def set_notify_methods(self, methods: list):
|
||
|
self._notify_methods = methods
|
||
|
|
||
|
def get_notify_methods(self) -> list:
|
||
|
return self._notify_methods
|
||
|
|
||
|
def connect(self):
|
||
|
raise NotImplementedError("Method should be overridden")
|
||
|
|
||
|
def get_executor(self):
|
||
|
raise NotImplementedError("Method should be overridden")
|
||
|
|
||
|
def disconnect(self):
|
||
|
raise NotImplementedError("Method should be overridden")
|