You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
932 B

from panflute import Space, SoftBreak, Str, Math
from typing import Union
# Import local files
from context import Context
Whitespace = Union[Space,SoftBreak]
class NBSP(Space):
pass
def bavlna(e: Whitespace, c: Context) -> bool:
"""Determine if given piece of whitespace should be non-breakable."""
if c.get_metadata("language") == "cs":
if isinstance(e.prev, Str) and isinstance(e.next, Str):
if 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
if prevC in operators and nextC in numbers:
return True
if isinstance(e.prev, Math) or isinstance(e.next, Math):
return True
return False