Merge pull request #344 from vkbo/autoreplace_xml

Auto-Replace XML Format
This commit is contained in:
Veronica K. Berglyd Olsen
2020-06-26 19:44:16 +02:00
committed by GitHub
3 changed files with 30 additions and 16 deletions
+22 -8
View File
@@ -449,7 +449,15 @@ class NWProject():
self.importItems.unpackEntries(xItem) self.importItems.unpackEntries(xItem)
elif xItem.tag == "autoReplace": elif xItem.tag == "autoReplace":
for xEntry in xItem: for xEntry in xItem:
self.autoReplace[xEntry.tag] = checkString(xEntry.text, None, False) if xEntry.tag == "entry":
if "key" in xEntry.attrib:
self.autoReplace[xEntry.attrib["key"]] = checkString(
xEntry.text, None, False
)
else: # Old format
self.autoReplace[xEntry.tag] = checkString(
xEntry.text, None, False
)
elif xItem.tag == "titleFormat": elif xItem.tag == "titleFormat":
titleFormat = self.titleFormat.copy() titleFormat = self.titleFormat.copy()
for xEntry in xItem: for xEntry in xItem:
@@ -501,7 +509,7 @@ class NWProject():
# Root element and project details # Root element and project details
logger.debug("Writing project meta") logger.debug("Writing project meta")
nwXML = etree.Element("novelWriterXML",attrib={ nwXML = etree.Element("novelWriterXML", attrib={
"appVersion" : str(nw.__version__), "appVersion" : str(nw.__version__),
"hexVersion" : str(nw.__hexversion__), "hexVersion" : str(nw.__hexversion__),
"fileVersion" : "1.1", "fileVersion" : "1.1",
@@ -533,11 +541,7 @@ class NWProject():
self._packProjectValue(xSettings, "lastWordCount", self.currWCount) self._packProjectValue(xSettings, "lastWordCount", self.currWCount)
self._packProjectValue(xSettings, "novelWordCount", wcNovel) self._packProjectValue(xSettings, "novelWordCount", wcNovel)
self._packProjectValue(xSettings, "notesWordCount", wcNotes) self._packProjectValue(xSettings, "notesWordCount", wcNotes)
self._packProjectKeyValue(xSettings, "autoReplace", self.autoReplace)
xAutoRep = etree.SubElement(xSettings, "autoReplace")
for aKey, aValue in self.autoReplace.items():
if len(aKey) > 0:
self._packProjectValue(xAutoRep, aKey, aValue)
xTitleFmt = etree.SubElement(xSettings, "titleFormat") xTitleFmt = etree.SubElement(xSettings, "titleFormat")
for aKey, aValue in self.titleFormat.items(): for aKey, aValue in self.titleFormat.items():
@@ -1041,10 +1045,20 @@ class NWProject():
if not isinstance(aValue, str): if not isinstance(aValue, str):
aValue = str(aValue) aValue = str(aValue)
if aValue == "" and not allowNone: continue if aValue == "" and not allowNone: continue
xItem = etree.SubElement(xParent,theName) xItem = etree.SubElement(xParent, theName)
xItem.text = aValue xItem.text = aValue
return return
def _packProjectKeyValue(self, xParent, theName, theDict):
"""Pack the entries in the auto-replace dictionary.
"""
xAutoRep = etree.SubElement(xParent, theName)
for aKey, aValue in theDict.items():
if len(aKey) > 0:
xEntry = etree.SubElement(xAutoRep, "entry", attrib={"key": aKey})
xEntry.text = aValue
return
def _scanProjectFolder(self): def _scanProjectFolder(self):
"""Scan the project folder and check that the files in it are """Scan the project folder and check that the files in it are
also in the project XML file. If they aren't, import them as also in the project XML file. If they aren't, import them as
+6 -6
View File
@@ -1,13 +1,13 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="0.10.0rc1" hexVersion="0x001000c1" fileVersion="1.1" timeStamp="2020-06-26 18:36:47"> <novelWriterXML appVersion="0.10.0rc1" hexVersion="0x001000c1" fileVersion="1.1" timeStamp="2020-06-26 19:29:32">
<project> <project>
<name>Sample Project</name> <name>Sample Project</name>
<title>Sample Project</title> <title>Sample Project</title>
<author>Jane Smith</author> <author>Jane Smith</author>
<author>Jay Doh</author> <author>Jay Doh</author>
<saveCount>587</saveCount> <saveCount>589</saveCount>
<autoCount>102</autoCount> <autoCount>102</autoCount>
<editTime>24235</editTime> <editTime>24247</editTime>
</project> </project>
<settings> <settings>
<doBackup>False</doBackup> <doBackup>False</doBackup>
@@ -19,9 +19,9 @@
<novelWordCount>606</novelWordCount> <novelWordCount>606</novelWordCount>
<notesWordCount>376</notesWordCount> <notesWordCount>376</notesWordCount>
<autoReplace> <autoReplace>
<A>B</A> <entry key="A">B</entry>
<B>E</B> <entry key="B">E</entry>
<C>D</C> <entry key="C">D</entry>
</autoReplace> </autoReplace>
<titleFormat> <titleFormat>
<title>%title%</title> <title>%title%</title>
+2 -2
View File
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="0.8.0rc1" hexVersion="0x000800c1" fileVersion="1.1" timeStamp="2020-06-05 21:07:03"> <novelWriterXML appVersion="0.10.0rc1" hexVersion="0x001000c1" fileVersion="1.1" timeStamp="2020-06-26 19:32:47">
<project> <project>
<name>Project Name</name> <name>Project Name</name>
<title>Project Title</title> <title>Project Title</title>
@@ -19,7 +19,7 @@
<novelWordCount>0</novelWordCount> <novelWordCount>0</novelWordCount>
<notesWordCount>0</notesWordCount> <notesWordCount>0</notesWordCount>
<autoReplace> <autoReplace>
<This>With This Stuff </This> <entry key="This">With This Stuff </entry>
</autoReplace> </autoReplace>
<titleFormat> <titleFormat>
<title>%title%</title> <title>%title%</title>