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