Browse Source

Some more clever bavlna stuff.

pull/28/head
Jan Černohorský 2 years ago
parent
commit
46dff9c42c
  1. 2
      test.md
  2. 23
      whitespace.py

2
test.md

@ -35,6 +35,8 @@ A non-breakable space bro
A lot of spaces A lot of spaces
A text with some $math$.
This should be seen by all. This should be seen by all.
[!opendatatask]{} [!opendatatask]{}

23
whitespace.py

@ -1,4 +1,4 @@
from panflute import Space,SoftBreak,Str from panflute import Space, SoftBreak, Str, Math
from typing import Union from typing import Union
# Import local files # Import local files
@ -12,11 +12,26 @@ class NBSP(Space):
def bavlna(e: Whitespace, c: Context) -> bool: def bavlna(e: Whitespace, c: Context) -> bool:
"""Determine if given piece of whitespace should be non-breakable.""" """Determine if given piece of whitespace should be non-breakable."""
if c.get_metadata("language") == "cs": if c.get_metadata("language") == "cs":
if isinstance(e.prev, Str) and isinstance(e.next, Str):
# TODO: Add more clever stuff if e.prev.text.lower() in ['k', 's', 'v', 'z', 'o', 'u', 'a', 'i']:
if isinstance(e.prev, Str) and isinstance(e.next, Str) and e.prev.text.lower() in ['k', 's', 'v', 'z', 'o', 'u', 'a', 'i']: return True
if isinstance(e.prev, Str) and isinstance(e.next, Str):
prevC = e.prev.text[-1]
nextC = e.next.text[0]
numbers = ["0123456789"]
operators = ["+-/*^%:"]
if prevC in numbers and nextC in numbers:
return True
if prevC in numbers and nextC in operators:
return True return True
if prevC in operators and nextC in numbers:
return True
if isinstance(e.prev, Math) or isinstance(e.next, Math):
return True

Loading…
Cancel
Save