Skip to content

Commit

Permalink
Process pad before and after settings in Preferences (#1985)
Browse files Browse the repository at this point in the history
  • Loading branch information
vkbo committed Jul 21, 2024
1 parent 7140788 commit 0d84653
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 11 deletions.
10 changes: 10 additions & 0 deletions novelwriter/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,16 @@ def simplified(text: str) -> str:
return " ".join(str(text).strip().split())


def compact(text: str) -> str:
"""Compact a string by removing spaces."""
return "".join(str(text).split())


def uniqueCompact(text: str) -> str:
"""Return a unique, compact and sorted string."""
return "".join(sorted(set(compact(text))))


def elide(text: str, length: int) -> str:
"""Elide a piece of text to a maximum length."""
if len(text) > (cut := max(4, length)):
Expand Down
10 changes: 5 additions & 5 deletions novelwriter/dialogs/preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
)

from novelwriter import CONFIG, SHARED
from novelwriter.common import describeFont
from novelwriter.common import describeFont, uniqueCompact
from novelwriter.constants import nwUnicode
from novelwriter.dialogs.quotes import GuiQuoteSelect
from novelwriter.extensions.configlayout import NColourLabel, NScrollableForm
Expand Down Expand Up @@ -952,8 +952,8 @@ def _doSave(self) -> None:
# Text Highlighting
dialogueStyle = self.dialogStyle.currentData()
allowOpenDial = self.allowOpenDial.isChecked()
narratorBreak = self.narratorBreak.text()
dialogueLine = self.dialogLine.text()
narratorBreak = self.narratorBreak.text().strip()
dialogueLine = self.dialogLine.text().strip()
altDialogOpen = self.altDialogOpen.text()
altDialogClose = self.altDialogClose.text()
highlightEmph = self.highlightEmph.isChecked()
Expand Down Expand Up @@ -983,8 +983,8 @@ def _doSave(self) -> None:
CONFIG.doReplaceDQuote = self.doReplaceDQuote.isChecked()
CONFIG.doReplaceDash = self.doReplaceDash.isChecked()
CONFIG.doReplaceDots = self.doReplaceDots.isChecked()
CONFIG.fmtPadBefore = self.fmtPadBefore.text().strip()
CONFIG.fmtPadAfter = self.fmtPadAfter.text().strip()
CONFIG.fmtPadBefore = uniqueCompact(self.fmtPadBefore.text())
CONFIG.fmtPadAfter = uniqueCompact(self.fmtPadAfter.text())
CONFIG.fmtPadThin = self.fmtPadThin.isChecked()

# Quotation Style
Expand Down
33 changes: 27 additions & 6 deletions tests/test_base/test_base_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@

from novelwriter.common import (
NWConfigParser, checkBool, checkFloat, checkInt, checkIntTuple, checkPath,
checkString, checkStringNone, checkUuid, cssCol, describeFont, elide,
formatFileFilter, formatInt, formatTime, formatTimeStamp, formatVersion,
fuzzyTime, getFileSize, hexToInt, isHandle, isItemClass, isItemLayout,
isItemType, isListInstance, isTitleTag, jsonEncode, makeFileNameSafe,
minmax, numberToRoman, openExternalPath, readTextFile, simplified,
transferCase, xmlIndent, yesNo
checkString, checkStringNone, checkUuid, compact, cssCol, describeFont,
elide, formatFileFilter, formatInt, formatTime, formatTimeStamp,
formatVersion, fuzzyTime, getFileSize, hexToInt, isHandle, isItemClass,
isItemLayout, isItemType, isListInstance, isTitleTag, jsonEncode,
makeFileNameSafe, minmax, numberToRoman, openExternalPath, readTextFile,
simplified, transferCase, uniqueCompact, xmlIndent, yesNo
)

from tests.mocked import causeOSError
Expand Down Expand Up @@ -346,6 +346,27 @@ def testBaseCommon_simplified():
assert simplified("\tHello\n\r\tWorld") == "Hello World"


@pytest.mark.base
def testBaseCommon_compact():
"""Test the compact function."""
assert compact("! ! !") == "!!!"
assert compact("1\t2\t3") == "123"
assert compact("1\n2\n3") == "123"
assert compact("1\r2\r3") == "123"
assert compact("1\u00a02\u00a03") == "123"


@pytest.mark.base
def testBaseCommon_uniqueCompact():
"""Test the uniqueCompact function."""
assert uniqueCompact("! ! !") == "!"
assert uniqueCompact("1\t2\t3") == "123"
assert uniqueCompact("1\n2\n3") == "123"
assert uniqueCompact("1\r2\r3") == "123"
assert uniqueCompact("1\u00a02\u00a03") == "123"
assert uniqueCompact("3 2 1") == "123"


@pytest.mark.base
def testBaseCommon_elide():
"""Test the elide function."""
Expand Down

0 comments on commit 0d84653

Please sign in to comment.