diff --git a/toot/output.py b/toot/output.py index fb9d8c0..0a2261f 100644 --- a/toot/output.py +++ b/toot/output.py @@ -3,13 +3,13 @@ import os import re import sys +import textwrap -from datetime import datetime, timezone from textwrap import wrap -from wcwidth import wcswidth from toot.tui.utils import parse_datetime +from wcwidth import wcswidth -from toot.utils import format_content, get_text, parse_html +from toot.utils import get_text, parse_html from toot.wcstring import wc_wrap @@ -88,17 +88,28 @@ def print_instance(instance): print_out("{}".format(instance['title'])) print_out("{}".format(instance['uri'])) print_out("running Mastodon {}".format(instance['version'])) - print_out("") + print_out() - description = instance['description'].strip() - if not description: - return + description = instance.get("description") + if description: + for paragraph in re.split(r"[\r\n]+", description.strip()): + paragraph = get_text(paragraph) + print_out(textwrap.fill(paragraph, width=80)) + print_out() - lines = [line.strip() for line in format_content(description) if line.strip()] - for line in lines: - for l in wrap(line.strip()): - print_out(l) - print_out() + rules = instance.get("rules") + if rules: + print_out("Rules:") + for ordinal, rule in enumerate(rules): + ordinal = f"{ordinal + 1}." + lines = textwrap.wrap(rule["text"], 80 - len(ordinal)) + first = True + for line in lines: + if first: + print_out(f"{ordinal} {line}") + first = False + else: + print_out(f"{' ' * len(ordinal)} {line}") def print_account(account):