Add helper function to combine JSON strings as larger JSON file

This commit is contained in:
Veronica Berglyd Olsen
2025-10-05 17:13:40 +02:00
parent 04198f3ede
commit 0344701f1b
3 changed files with 23 additions and 6 deletions
+6
View File
@@ -560,6 +560,12 @@ def jsonEncode(data: dict | list | tuple, n: int = 0, nmax: int = 0) -> str:
return "".join(buffer) return "".join(buffer)
def jsonCombine(data: dict[str, str]) -> str:
"""Combine multiple already packed JSON strings."""
payload = ",\n".join(f' "{k}": {v}' for k, v in data.items())
return f"{{\n{payload}\n}}\n"
## ##
# XML Helpers # XML Helpers
## ##
+15 -4
View File
@@ -36,10 +36,10 @@ from novelwriter.common import (
describeFont, elide, encodeMimeHandles, firstFloat, fontMatcher, describeFont, elide, encodeMimeHandles, firstFloat, fontMatcher,
formatFileFilter, formatInt, formatTime, formatTimeStamp, formatVersion, formatFileFilter, formatInt, formatTime, formatTimeStamp, formatVersion,
fuzzyTime, getFileSize, hexToInt, isHandle, isItemClass, isItemLayout, fuzzyTime, getFileSize, hexToInt, isHandle, isItemClass, isItemLayout,
isItemType, isListInstance, isTitleTag, jsonEncode, makeFileNameSafe, isItemType, isListInstance, isTitleTag, jsonCombine, jsonEncode,
minmax, numberToRoman, openExternalPath, processDialogSymbols, makeFileNameSafe, minmax, numberToRoman, openExternalPath,
readTextFile, simplified, transferCase, uniqueCompact, utf16CharMap, processDialogSymbols, readTextFile, simplified, transferCase,
xmlElement, xmlIndent, xmlSubElem, yesNo uniqueCompact, utf16CharMap, xmlElement, xmlIndent, xmlSubElem, yesNo
) )
from novelwriter.enum import nwItemClass from novelwriter.enum import nwItemClass
@@ -651,6 +651,17 @@ def testBaseCommon_jsonEncode():
) )
@pytest.mark.base
def testBaseCommon_jsonCombine():
"""Test the jsonCombine function."""
assert jsonCombine({"a": "[1, 2]", "b": "[3, 4]"}) == (
'{\n'
' "a": [1, 2],\n'
' "b": [3, 4]\n'
'}\n'
)
@pytest.mark.base @pytest.mark.base
def testBaseCommon_xmlIndent(): def testBaseCommon_xmlIndent():
"""Test the xmlIndent function.""" """Test the xmlIndent function."""
+2 -2
View File
@@ -66,8 +66,8 @@ class C:
def cmpFiles( def cmpFiles(
fileOne: str | Path, fileOne: str | Path,
fileTwo: str | Path, fileTwo: str | Path,
ignoreLines: list | None = None, ignoreLines: list[int] | None = None,
ignoreStart: tuple | None = None ignoreStart: tuple[str] | None = None
) -> bool: ) -> bool:
"""Compare two files, with optional line ignore.""" """Compare two files, with optional line ignore."""
if ignoreLines is None: if ignoreLines is None: