From a2707df86fcd7541840f2f3091953b717a6a101b Mon Sep 17 00:00:00 2001 From: Zach DeCook Date: Sat, 10 Dec 2022 14:30:23 -0500 Subject: widgets: Create widget to render gemtext --- gemtext.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 gemtext.py (limited to 'gemtext.py') diff --git a/gemtext.py b/gemtext.py new file mode 100644 index 0000000..df8402c --- /dev/null +++ b/gemtext.py @@ -0,0 +1,27 @@ +from textual.widgets import Button, Static +from textual.app import ComposeResult +from textual.containers import Container + +class Gemtext(Static): + """Gemtext widget.""" + items = [] + def compose(self) -> ComposeResult: + yield Container(*self.items) + + def __init__(self, txt): + super().__init__() + for line in txt.split('\n'): + if line.startswith("=>"): + path = line[2:].lstrip().split(' ')[0] + text = ' '.join(line[2:].lstrip().split(' ')[1:]) + self.items.append(Button(text or path, name=path)) + else: + self.items.append(Static(line)) + +if __name__ == "__main__": + from textual.app import App + class Test(App): + def compose(self) -> ComposeResult: + yield Gemtext(txt="#title\n=> /href link text\nworld star hiphop") + app = Test() + app.run() -- cgit 1.4.1