Add an elide function for shortening text

This commit is contained in:
Veronica Berglyd Olsen
2024-04-28 18:22:31 +02:00
parent e01e14075c
commit 864172ea50
3 changed files with 38 additions and 12 deletions
+8 -1
View File
@@ -40,7 +40,7 @@ from PyQt5.QtCore import QCoreApplication, QUrl
from PyQt5.QtGui import QColor, QDesktopServices
from novelwriter.constants import nwConst, nwLabels, nwUnicode, trConst
from novelwriter.enum import nwItemClass, nwItemType, nwItemLayout
from novelwriter.enum import nwItemClass, nwItemLayout, nwItemType
from novelwriter.error import logException
if TYPE_CHECKING: # pragma: no cover
@@ -279,6 +279,13 @@ def simplified(text: str) -> str:
return " ".join(str(text).strip().split())
def elide(text: str, length: int) -> str:
"""Elide a piece of text to a maximum length."""
if len(text) > (cut := max(4, length)):
return f"{text[:cut-4].rstrip()} ..."
return text
def yesNo(value: int | bool | None) -> Literal["yes", "no"]:
"""Convert a boolean evaluated variable to a yes or no."""
return "yes" if value else "no"