retronews

a featureful fork of the luke8086/retronews hn+lobste.rs tui
Log | Files | Refs | README | LICENSE

commit d1de27eb41b1c4e9635e4a70e52dbde2c6a2f68d
parent 27183e11ef2363de858b53b4a5b52cfd5fbf73a2
Author: luke8086 <55237178+luke8086@users.noreply.github.com>
Date:   Sat, 17 Jun 2023 15:46:12 +0000

Improve formatting of quote and code blocks

- Trim leading indentation from code
- Remove spaces between nested quotation marks

Diffstat:
Mretronews.py | 18++++++++++--------
Mtests/test_hn_05.out | 12++++++------
Mtests/test_hn_06.out | 2+-
Mtests/test_lb_02.out | 2+-
Mtests/test_lb_04.out | 22+++++++++++-----------
Mtests/test_lb_08.out | 14+++++++-------
Mtests/test_lb_09.out | 6+++---
7 files changed, 39 insertions(+), 37 deletions(-)

diff --git a/retronews.py b/retronews.py @@ -409,12 +409,11 @@ def text_wrap(text: str, width=70) -> str: return "\n".join(lines) -def text_indent(text: str, initial: str, recurring: Optional[str] = None) -> str: - if recurring is None: - recurring = initial - +def text_unindent(text: str) -> str: lines = text.split("\n") - lines = [(initial + lines[0]).rstrip()] + [(recurring + line).rstrip() for line in lines[1:]] + + while all(line.startswith(" ") or line == "" for line in lines): + lines = [line[1:] for line in lines] return "\n".join(lines) @@ -587,11 +586,14 @@ def html_node_render_block(node: HTMLNode, width=70) -> str: text = "\n".join(parts) if node.tag == "blockquote": - text = text_indent(text, "> ") + text = "\n".join((">" if line.startswith("> ") else "> ") + line for line in text.split("\n")) elif node.tag == "pre": - text = text_indent(text, "| ") + text = text_unindent(text) + text = "\n".join("| " + line for line in text.split("\n")) elif node.tag == "li": - text = text_indent(text, "- ", " ") + lines = text.split("\n") + lines = [("- " + lines[0]).rstrip()] + [(" " + line).rstrip() for line in lines[1:]] + text = "\n".join(lines) return text diff --git a/tests/test_hn_05.out b/tests/test_hn_05.out @@ -1,16 +1,16 @@ Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus te. Noster nominati recteque no has. -| def hello(): -| print('Hello World') -| return None +| def hello(): +| print('Hello World') +| return None Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus te. Noster nominati recteque no has. -| def hello(): -| print('Hello World') -| return None +| def hello(): +| print('Hello World') +| return None Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus te. Noster nominati recteque no has. \ No newline at end of file diff --git a/tests/test_hn_06.out b/tests/test_hn_06.out @@ -1,5 +1,5 @@ Lorem ipsum dolor sit amet, pro eu soleat civibus. -| lambda L: [] if L==[] else qsort([x for x in L[1:] if x< L[0]]) + L[0:1] + qsort([x for x in L[1:] if x>=L[0]]) +| lambda L: [] if L==[] else qsort([x for x in L[1:] if x< L[0]]) + L[0:1] + qsort([x for x in L[1:] if x>=L[0]]) Mel quas sensibus te. Noster nominati recteque no has. \ No newline at end of file diff --git a/tests/test_lb_02.out b/tests/test_lb_02.out @@ -13,5 +13,5 @@ elit, sed do eiusmod tempor. Lorem `ipsum` dolor sit amet, | if True: | print('world') | print('!!!') -| +| | hello_world() \ No newline at end of file diff --git a/tests/test_lb_04.out b/tests/test_lb_04.out @@ -5,17 +5,17 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit > amet, consectetur adipiscing elit, sed do eiusmod tempor. Lorem > ipsum dolor sit amet, consectetur `adipiscing elit`, sed do eiusmod > tempor -> -> > Lorem ipsum /dolor/ *sit -> > dolor* amet, consectetur adipiscing elit -> > -> > ------------------------------------------------------------------ -> > -> > Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do -> > eiusmod tempor. Lorem ipsum dolor sit amet, consectetur adipiscing -> > elit, sed do eiusmod tempor. Lorem ipsum dolor sit amet, -> > consectetur adipiscing elit, sed do eiusmod tempor -> +> +>> Lorem ipsum /dolor/ *sit +>> dolor* amet, consectetur adipiscing elit +>> +>> ------------------------------------------------------------------ +>> +>> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do +>> eiusmod tempor. Lorem ipsum dolor sit amet, consectetur adipiscing +>> elit, sed do eiusmod tempor. Lorem ipsum dolor sit amet, +>> consectetur adipiscing elit, sed do eiusmod tempor +> > Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do > eiusmod tempor. Lorem ipsum dolor sit amet, consectetur adipiscing > elit, sed do eiusmod tempor. Lorem ipsum dolor sit amet, consectetur diff --git a/tests/test_lb_08.out b/tests/test_lb_08.out @@ -1,14 +1,14 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit -> > - Lorem ipsum dolor sit amet, consectetur adipiscing elit -> > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do -> > eiusmod tempor. Lorem ipsum dolor sit amet, consectetur -> > adipiscing elit, sed do eiusmod tempor. Lorem ipsum dolor sit -> > amet, consectetur adipiscing elit, sed do eiusmod tempor -> > - Lorem ipsum dolor sit amet, consectetur adipiscing elit +>> - Lorem ipsum dolor sit amet, consectetur adipiscing elit +>> - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do +>> eiusmod tempor. Lorem ipsum dolor sit amet, consectetur +>> adipiscing elit, sed do eiusmod tempor. Lorem ipsum dolor sit +>> amet, consectetur adipiscing elit, sed do eiusmod tempor +>> - Lorem ipsum dolor sit amet, consectetur adipiscing elit > Lorem ipsum dolor sit amet, consectetur adipiscing elit -> +> > Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do > eiusmod tempor. Lorem ipsum dolor sit amet, consectetur adipiscing > elit, sed do eiusmod tempor. Lorem ipsum dolor sit amet, consectetur diff --git a/tests/test_lb_09.out b/tests/test_lb_09.out @@ -1,13 +1,13 @@ > Lorem ipsum dolor sit amet, consectetur adipiscing elit > Lorem ipsum dolor sit amet, consectetur adipiscing elit -> +> > | def hello_world(): > | print('hello') > | if True: > | print('world') > | print('!!!') -> | +> | > | hello_world() Lorem ipsum dolor sit amet, consectetur adipiscing elit @@ -17,7 +17,7 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit | if True: | print('world') | print('!!!') -| +| | hello_world() Lorem ipsum dolor sit amet, consectetur adipiscing elit \ No newline at end of file