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:
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