Skip to content

Commit

Permalink
markdown: fix linebreak
Browse files Browse the repository at this point in the history
  • Loading branch information
jdum committed Nov 30, 2024
1 parent cfbab91 commit 80bd234
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 28 deletions.
10 changes: 7 additions & 3 deletions odfdo/mixin_md.py
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ def _md_format(self, post_styler: Callable = _as_none) -> str:

class MDLineBreak(MDStyle):
def _md_format(self, post_styler: Callable = _as_none) -> str:
return "\n" + post_styler(self.tail)
return "\\\n" + post_styler(self.tail)

def _md_collect(self) -> list[str]:
if content := self._md_format():
Expand Down Expand Up @@ -521,8 +521,12 @@ def format_cell(val: Any, filler: str = " ") -> str:
acc.append(_as_none(element.tail))
result.append(_strip_left_spaces("".join(x for x in acc if x)))
sval = " ".join(result)
return f"{filler}{sval.strip()}{filler}".replace("\n", " ")
return f"{filler}{str(val).strip()}{filler}".replace("\n", " ")
return f"{filler}{sval.strip()}{filler}".replace("\\\n", " ").replace(
"\n", " "
)
return f"{filler}{str(val).strip()}{filler}".replace("\\\n", " ").replace(
"\n", " "
)

def fill_cell(pos: int, cell_val: Any, filler: str = " ") -> str:
sval = format_cell(cell_val, filler)
Expand Down
51 changes: 26 additions & 25 deletions tests/test_markdown.py
Original file line number Diff line number Diff line change
Expand Up @@ -546,7 +546,7 @@ def test_md_case3_text(document_case3): # FAIL
```
another one,
with _thing_ and other things
with *thing* and other things
in it
tabs in same place
spaces
Expand All @@ -569,31 +569,32 @@ def test_md_dormeur_text(document_dormeur): # FAIL
md = document_dormeur.to_markdown()
expected = dedent(
"""\
# ~~Le~~ dormeur[1] du *val*
C'est un trou de verdure où chante une rivière,
Accrochant follement aux herbes des haillons
D'argent ; où le soleil, de la *montagne*[2] **fière**,
Luit : c'est un petit val qui mousse de rayons.
Un soldat jeune, bouche ouverte, tête nue,
Et la nuque baignant dans le frais cresson bleu,
Dort ; il est étendu dans l'herbe, sous la nue,
Pâle dans son lit vert où la lumière pleut.
Les pieds dans les glaïeuls, il dort. Souriant[i] comme
Sourirait un enfant malade, il fait un somme :
Nature, berce-le chaudement : il a froid.
Les parfums ne font pas frissonner sa narine ;
Il dort dans le soleil, la main sur sa poitrine,
# ~~Le~~ dormeur[1] du _val_
C'est un trou de verdure où chante une rivière,\\
Accrochant follement aux herbes des haillons\\
D'argent ; où le soleil, de la _montagne_[2] **fière**,\\
Luit : c'est un petit val qui mousse de rayons.\\
\\
Un soldat jeune, bouche ouverte, tête nue,\\
Et la nuque baignant dans le frais cresson bleu,\\
Dort ; il est étendu dans l'herbe, sous la nue,\\
Pâle dans son lit vert où la lumière pleut.\\
\\
Les pieds dans les glaïeuls, il dort. Souriant[i] comme\\
Sourirait un enfant malade, il fait un somme :\\
Nature, berce\\-le chaudement : il a froid.\\
\\
Les parfums ne font pas frissonner sa narine ;\\
Il dort dans le soleil, la main sur sa poitrine,\\
Tranquille. Il a deux trous rouges au côté droit.
Arthur Rimbaud
1. Note dormeur
2. Note next [remote link](https://test.example.com/)
i. End note
"""
).strip()
print(repr(md.strip()))
Expand All @@ -606,14 +607,14 @@ def test_md_lorem_text(document_lorem): # FAIL
"""\
# Lorem ipsum dolor sit amet
*Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in,* **pretium** *a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;* **Aliquam nibh. Mauris ac mauris sed pede pellentesque** *fermentum.*
_Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in,_ **pretium** _a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;_ **Aliquam nibh. Mauris ac mauris sed pede pellentesque** _fermentum._
- Maecenas adipiscing ante non diam sodales
- Ut velit mauris, egestas sed, gravida nec, ornare ut, mi.
Aenean utorci vel massa suscipit **pulvinar**.
**Maecenas adipiscing ante non diam sodales hendrerit. Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, ligula non tempus aliquam, nunc turpis ullamcorper nibh, in tempus sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer id felis. Curabitur aliquet pellentesque diam. Integer quis metus vitae elit lobortis egestas. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et sapien. Integer tortor tellus, aliquam faucibus, convallis id, congue eu, quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non elementum posuere, metus purus iaculis lectus, et tristique ligula justo vitae magna. Aliquam convallis sollicitudin purus. Praesent aliquam, enim at fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, felis magna fermentum augue, et ultricies lacus lorem varius purus.** *Curabitur* **eu amet.**
**Maecenas adipiscing ante non diam sodales hendrerit. Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, ligula non tempus aliquam, nunc turpis ullamcorper nibh, in tempus sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer id felis. Curabitur aliquet pellentesque diam. Integer quis metus vitae elit lobortis egestas. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et sapien. Integer tortor tellus, aliquam faucibus, convallis id, congue eu, quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non elementum posuere, metus purus iaculis lectus, et tristique ligula justo vitae magna. Aliquam convallis sollicitudin purus. Praesent aliquam, enim at fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, felis magna fermentum augue, et ultricies lacus lorem varius purus.** _Curabitur_ **eu amet.**
"""
).strip()
print(repr(md.strip()))
Expand Down Expand Up @@ -698,10 +699,10 @@ def test_md_img_text(document_img): # FAIL
"""\
**Image test**
A chair :
A chair :
![alternate name, chair](Pictures/1000000000000094000001004C83F003.jpg)
*Figure* 1 *chair*
_Figure_ 1 _chair_
"""
).strip()
print(repr(md.strip()))
Expand All @@ -716,7 +717,7 @@ def test_md_table_text(document_tab): # FAIL
| a | b | c | d |
|-------------------|---------------------------------|-----|-----------------|
| Some bar \\| there | Log or *short* or **very** long | | \\*\\*no\\*\\* bold |
| Some bar \\| there | Log or _short_ or **very** long | | \\*\\*no\\*\\* bold |
| 1 | 2 | 3 | 4 |
| `fixed` | 20 | 30 | 40 |
| 100 | **200** | 300 | 400 |
Expand All @@ -726,7 +727,7 @@ def test_md_table_text(document_tab): # FAIL
| AAAAAAAAAAAAAAAAAA | BBBB | **CCC** | | EE |
|--------------------|------------------------|-----------|------------------------|-------|
| 1.234 | a | *bb* | 2024-12-25 | -2 |
| 1.234 | a | _bb_ | 2024\\-12\\-25 | \\-2 |
| **Some title** | Some line break inside | anchor[1] | A list of 3 paras here | `123` |
Expand Down

0 comments on commit 80bd234

Please sign in to comment.