Add helper function to combine JSON strings as larger JSON file
This commit is contained in:
@@ -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
|
||||||
##
|
##
|
||||||
|
|||||||
@@ -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
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user