Make index dictionaries internal

This commit is contained in:
Veronica K. B. Olsen
2021-01-02 22:28:30 +01:00
parent acb6f1fc87
commit 1bdf0b5500
3 changed files with 219 additions and 219 deletions
+113 -113
View File
@@ -51,11 +51,11 @@ class NWIndex():
self.indexBroken = False self.indexBroken = False
# Indices # Indices
self.tagIndex = {} self._tagIndex = {}
self.refIndex = {} self._refIndex = {}
self.novelIndex = {} self._novelIndex = {}
self.noteIndex = {} self._noteIndex = {}
self.textCounts = {} self._textCounts = {}
# TimeStamps # TimeStamps
self._timeNovel = 0 self._timeNovel = 0
@@ -71,14 +71,14 @@ class NWIndex():
def clearIndex(self): def clearIndex(self):
"""Clear the index dictionaries and time stamps. """Clear the index dictionaries and time stamps.
""" """
self.tagIndex = {} self._tagIndex = {}
self.refIndex = {} self._refIndex = {}
self.novelIndex = {} self._novelIndex = {}
self.noteIndex = {} self._noteIndex = {}
self.textCounts = {} self._textCounts = {}
self._timeNovel = 0 self._timeNovel = 0
self._timeNotes = 0 self._timeNotes = 0
self._timeIndex = 0 self._timeIndex = 0
return return
def deleteHandle(self, tHandle): def deleteHandle(self, tHandle):
@@ -87,17 +87,17 @@ class NWIndex():
logger.debug("Removing item %s from the index" % tHandle) logger.debug("Removing item %s from the index" % tHandle)
delTags = [] delTags = []
for tTag in self.tagIndex: for tTag in self._tagIndex:
if self.tagIndex[tTag][1] == tHandle: if self._tagIndex[tTag][1] == tHandle:
delTags.append(tTag) delTags.append(tTag)
for tTag in delTags: for tTag in delTags:
self.tagIndex.pop(tTag, None) self._tagIndex.pop(tTag, None)
self.refIndex.pop(tHandle, None) self._refIndex.pop(tHandle, None)
self.novelIndex.pop(tHandle, None) self._novelIndex.pop(tHandle, None)
self.noteIndex.pop(tHandle, None) self._noteIndex.pop(tHandle, None)
self.textCounts.pop(tHandle, None) self._textCounts.pop(tHandle, None)
return return
@@ -157,15 +157,15 @@ class NWIndex():
return False return False
if "tagIndex" in theData.keys(): if "tagIndex" in theData.keys():
self.tagIndex = theData["tagIndex"] self._tagIndex = theData["tagIndex"]
if "refIndex" in theData.keys(): if "refIndex" in theData.keys():
self.refIndex = theData["refIndex"] self._refIndex = theData["refIndex"]
if "novelIndex" in theData.keys(): if "novelIndex" in theData.keys():
self.novelIndex = theData["novelIndex"] self._novelIndex = theData["novelIndex"]
if "noteIndex" in theData.keys(): if "noteIndex" in theData.keys():
self.noteIndex = theData["noteIndex"] self._noteIndex = theData["noteIndex"]
if "textCounts" in theData.keys(): if "textCounts" in theData.keys():
self.textCounts = theData["textCounts"] self._textCounts = theData["textCounts"]
nowTime = round(time()) nowTime = round(time())
self._timeNovel = nowTime self._timeNovel = nowTime
@@ -186,11 +186,11 @@ class NWIndex():
try: try:
with open(indexFile, mode="w+", encoding="utf8") as outFile: with open(indexFile, mode="w+", encoding="utf8") as outFile:
json.dump({ json.dump({
"tagIndex" : self.tagIndex, "tagIndex" : self._tagIndex,
"refIndex" : self.refIndex, "refIndex" : self._refIndex,
"novelIndex" : self.novelIndex, "novelIndex" : self._novelIndex,
"noteIndex" : self.noteIndex, "noteIndex" : self._noteIndex,
"textCounts" : self.textCounts, "textCounts" : self._textCounts,
}, outFile, indent=2) }, outFile, indent=2)
except Exception as e: except Exception as e:
logger.error("Failed to save index file") logger.error("Failed to save index file")
@@ -207,28 +207,28 @@ class NWIndex():
self.indexBroken = False self.indexBroken = False
try: try:
for tTag in self.tagIndex: for tTag in self._tagIndex:
if len(self.tagIndex[tTag]) != 4: if len(self._tagIndex[tTag]) != 4:
self.indexBroken = True self.indexBroken = True
for tHandle in self.refIndex: for tHandle in self._refIndex:
for sTitle in self.refIndex[tHandle]: for sTitle in self._refIndex[tHandle]:
for tEntry in self.refIndex[tHandle][sTitle]["tags"]: for tEntry in self._refIndex[tHandle][sTitle]["tags"]:
if len(tEntry) != 3: if len(tEntry) != 3:
self.indexBroken = True self.indexBroken = True
for tHandle in self.novelIndex: for tHandle in self._novelIndex:
for sLine in self.novelIndex[tHandle]: for sLine in self._novelIndex[tHandle]:
if len(self.novelIndex[tHandle][sLine].keys()) != 8: if len(self._novelIndex[tHandle][sLine].keys()) != 8:
self.indexBroken = True self.indexBroken = True
for tHandle in self.noteIndex: for tHandle in self._noteIndex:
for sLine in self.noteIndex[tHandle]: for sLine in self._noteIndex[tHandle]:
if len(self.noteIndex[tHandle][sLine].keys()) != 8: if len(self._noteIndex[tHandle][sLine].keys()) != 8:
self.indexBroken = True self.indexBroken = True
for tHandle in self.textCounts: for tHandle in self._textCounts:
if len(self.textCounts[tHandle]) != 3: if len(self._textCounts[tHandle]) != 3:
self.indexBroken = True self.indexBroken = True
except Exception: except Exception:
@@ -271,7 +271,7 @@ class NWIndex():
# Run word counter for the whole text # Run word counter for the whole text
cC, wC, pC = countWords(theText) cC, wC, pC = countWords(theText)
self.textCounts[tHandle] = [cC, wC, pC] self._textCounts[tHandle] = [cC, wC, pC]
# If the file is archived or trashed, we don't index the file itself # If the file is archived or trashed, we don't index the file itself
if self.theProject.projTree.isTrashRoot(theItem.itemParent): if self.theProject.projTree.isTrashRoot(theItem.itemParent):
@@ -288,25 +288,25 @@ class NWIndex():
# Check file type, and reset its old index # Check file type, and reset its old index
# Also add a dummy entry T000000 in case the file has no title # Also add a dummy entry T000000 in case the file has no title
self.refIndex[tHandle] = {} self._refIndex[tHandle] = {}
self.refIndex[tHandle]["T000000"] = { self._refIndex[tHandle]["T000000"] = {
"tags" : [], "tags" : [],
"updated" : round(time()), "updated" : round(time()),
} }
if itemLayout == nwItemLayout.NOTE: if itemLayout == nwItemLayout.NOTE:
self.noteIndex[tHandle] = {} self._noteIndex[tHandle] = {}
isNovel = False isNovel = False
else: else:
self.novelIndex[tHandle] = {} self._novelIndex[tHandle] = {}
isNovel = True isNovel = True
# Also clear references to file in tag index # Also clear references to file in tag index
clearTags = [] clearTags = []
for aTag in self.tagIndex: for aTag in self._tagIndex:
if self.tagIndex[aTag][1] == tHandle: if self._tagIndex[aTag][1] == tHandle:
clearTags.append(aTag) clearTags.append(aTag)
for aTag in clearTags: for aTag in clearTags:
self.tagIndex.pop(aTag) self._tagIndex.pop(aTag)
nLine = 0 nLine = 0
nTitle = 0 nTitle = 0
@@ -379,7 +379,7 @@ class NWIndex():
return False return False
sTitle = "T%06d" % nLine sTitle = "T%06d" % nLine
self.refIndex[tHandle][sTitle] = { self._refIndex[tHandle][sTitle] = {
"tags" : [], "tags" : [],
"updated" : round(time()), "updated" : round(time()),
} }
@@ -396,11 +396,11 @@ class NWIndex():
if hText != "": if hText != "":
if isNovel: if isNovel:
if tHandle in self.novelIndex: if tHandle in self._novelIndex:
self.novelIndex[tHandle][sTitle] = theData self._novelIndex[tHandle][sTitle] = theData
else: else:
if tHandle in self.noteIndex: if tHandle in self._noteIndex:
self.noteIndex[tHandle][sTitle] = theData self._noteIndex[tHandle][sTitle] = theData
return True return True
@@ -410,19 +410,19 @@ class NWIndex():
cC, wC, pC = countWords(theText) cC, wC, pC = countWords(theText)
sTitle = "T%06d" % nTitle sTitle = "T%06d" % nTitle
if isNovel: if isNovel:
if tHandle in self.novelIndex: if tHandle in self._novelIndex:
if sTitle in self.novelIndex[tHandle]: if sTitle in self._novelIndex[tHandle]:
self.novelIndex[tHandle][sTitle]["cCount"] = cC self._novelIndex[tHandle][sTitle]["cCount"] = cC
self.novelIndex[tHandle][sTitle]["wCount"] = wC self._novelIndex[tHandle][sTitle]["wCount"] = wC
self.novelIndex[tHandle][sTitle]["pCount"] = pC self._novelIndex[tHandle][sTitle]["pCount"] = pC
self.novelIndex[tHandle][sTitle]["updated"] = round(time()) self._novelIndex[tHandle][sTitle]["updated"] = round(time())
else: else:
if tHandle in self.noteIndex: if tHandle in self._noteIndex:
if sTitle in self.noteIndex[tHandle]: if sTitle in self._noteIndex[tHandle]:
self.noteIndex[tHandle][sTitle]["cCount"] = cC self._noteIndex[tHandle][sTitle]["cCount"] = cC
self.noteIndex[tHandle][sTitle]["wCount"] = wC self._noteIndex[tHandle][sTitle]["wCount"] = wC
self.noteIndex[tHandle][sTitle]["pCount"] = pC self._noteIndex[tHandle][sTitle]["pCount"] = pC
self.noteIndex[tHandle][sTitle]["updated"] = round(time()) self._noteIndex[tHandle][sTitle]["updated"] = round(time())
return return
def _indexSynopsis(self, tHandle, isNovel, theText, nTitle): def _indexSynopsis(self, tHandle, isNovel, theText, nTitle):
@@ -430,15 +430,15 @@ class NWIndex():
""" """
sTitle = "T%06d" % nTitle sTitle = "T%06d" % nTitle
if isNovel: if isNovel:
if tHandle in self.novelIndex: if tHandle in self._novelIndex:
if sTitle in self.novelIndex[tHandle]: if sTitle in self._novelIndex[tHandle]:
self.novelIndex[tHandle][sTitle]["synopsis"] = theText self._novelIndex[tHandle][sTitle]["synopsis"] = theText
self.novelIndex[tHandle][sTitle]["updated"] = round(time()) self._novelIndex[tHandle][sTitle]["updated"] = round(time())
else: else:
if tHandle in self.noteIndex: if tHandle in self._noteIndex:
if sTitle in self.noteIndex[tHandle]: if sTitle in self._noteIndex[tHandle]:
self.noteIndex[tHandle][sTitle]["synopsis"] = theText self._noteIndex[tHandle][sTitle]["synopsis"] = theText
self.noteIndex[tHandle][sTitle]["updated"] = round(time()) self._noteIndex[tHandle][sTitle]["updated"] = round(time())
return return
def _indexNoteRef(self, tHandle, aLine, nLine, nTitle): def _indexNoteRef(self, tHandle, aLine, nLine, nTitle):
@@ -450,9 +450,9 @@ class NWIndex():
return False return False
sTitle = "T%06d" % nTitle sTitle = "T%06d" % nTitle
if sTitle in self.refIndex[tHandle] and theBits[0] != nwKeyWords.TAG_KEY: if sTitle in self._refIndex[tHandle] and theBits[0] != nwKeyWords.TAG_KEY:
for aVal in theBits[1:]: for aVal in theBits[1:]:
self.refIndex[tHandle][sTitle]["tags"].append([nLine, theBits[0], aVal]) self._refIndex[tHandle][sTitle]["tags"].append([nLine, theBits[0], aVal])
return True return True
@@ -465,7 +465,7 @@ class NWIndex():
if theBits[0] == nwKeyWords.TAG_KEY: if theBits[0] == nwKeyWords.TAG_KEY:
sTitle = "T%06d" % nTitle sTitle = "T%06d" % nTitle
self.tagIndex[theBits[1]] = [nLine, tHandle, itemClass.name, sTitle] self._tagIndex[theBits[1]] = [nLine, tHandle, itemClass.name, sTitle]
return True return True
@@ -529,8 +529,8 @@ class NWIndex():
# is ignored # is ignored
if theBits[0] == nwKeyWords.TAG_KEY and nBits > 1: if theBits[0] == nwKeyWords.TAG_KEY and nBits > 1:
isGood[0] = True isGood[0] = True
if theBits[1] in self.tagIndex: if theBits[1] in self._tagIndex:
if self.tagIndex[theBits[1]][1] == tItem.itemHandle: if self._tagIndex[theBits[1]][1] == tItem.itemHandle:
isGood[1] = True isGood[1] = True
else: else:
isGood[1] = False isGood[1] = False
@@ -540,8 +540,8 @@ class NWIndex():
# If we're still here, we better check that the references exist # If we're still here, we better check that the references exist
for n in range(1, nBits): for n in range(1, nBits):
if theBits[n] in self.tagIndex: if theBits[n] in self._tagIndex:
isGood[n] = nwKeyWords.KEY_CLASS[theBits[0]].name == self.tagIndex[theBits[n]][2] isGood[n] = nwKeyWords.KEY_CLASS[theBits[0]].name == self._tagIndex[theBits[n]][2]
return isGood return isGood
@@ -559,11 +559,11 @@ class NWIndex():
if not tItem.isExported and skipExcluded: if not tItem.isExported and skipExcluded:
continue continue
tHandle = tItem.itemHandle tHandle = tItem.itemHandle
if tHandle not in self.novelIndex: if tHandle not in self._novelIndex:
continue continue
for sTitle in sorted(self.novelIndex[tHandle]): for sTitle in sorted(self._novelIndex[tHandle]):
tKey = "%s:%s" % (tHandle, sTitle) tKey = "%s:%s" % (tHandle, sTitle)
yield tKey, tHandle, sTitle, self.novelIndex[tHandle][sTitle] yield tKey, tHandle, sTitle, self._novelIndex[tHandle][sTitle]
def getCounts(self, tHandle, sTitle=None): def getCounts(self, tHandle, sTitle=None):
"""Returns the counts for a file, or a section of a file """Returns the counts for a file, or a section of a file
@@ -574,21 +574,21 @@ class NWIndex():
pC = 0 pC = 0
if sTitle is None: if sTitle is None:
if tHandle in self.textCounts: if tHandle in self._textCounts:
cC = self.textCounts[tHandle][0] cC = self._textCounts[tHandle][0]
wC = self.textCounts[tHandle][1] wC = self._textCounts[tHandle][1]
pC = self.textCounts[tHandle][2] pC = self._textCounts[tHandle][2]
else: else:
if tHandle in self.novelIndex: if tHandle in self._novelIndex:
if sTitle in self.novelIndex[tHandle]: if sTitle in self._novelIndex[tHandle]:
cC = self.novelIndex[tHandle][sTitle]["cCount"] cC = self._novelIndex[tHandle][sTitle]["cCount"]
wC = self.novelIndex[tHandle][sTitle]["wCount"] wC = self._novelIndex[tHandle][sTitle]["wCount"]
pC = self.novelIndex[tHandle][sTitle]["pCount"] pC = self._novelIndex[tHandle][sTitle]["pCount"]
elif tHandle in self.noteIndex: elif tHandle in self._noteIndex:
if sTitle in self.noteIndex[tHandle]: if sTitle in self._noteIndex[tHandle]:
cC = self.noteIndex[tHandle][sTitle]["cCount"] cC = self._noteIndex[tHandle][sTitle]["cCount"]
wC = self.noteIndex[tHandle][sTitle]["wCount"] wC = self._noteIndex[tHandle][sTitle]["wCount"]
pC = self.noteIndex[tHandle][sTitle]["pCount"] pC = self._noteIndex[tHandle][sTitle]["pCount"]
return cC, wC, pC return cC, wC, pC
@@ -600,11 +600,11 @@ class NWIndex():
for tKey in nwKeyWords.KEY_CLASS: for tKey in nwKeyWords.KEY_CLASS:
theRefs[tKey] = [] theRefs[tKey] = []
if tHandle not in self.refIndex: if tHandle not in self._refIndex:
return theRefs return theRefs
for refTitle in self.refIndex[tHandle]: for refTitle in self._refIndex[tHandle]:
theTags = self.refIndex[tHandle][refTitle].get("tags", None) theTags = self._refIndex[tHandle][refTitle].get("tags", None)
for aTag in theTags: for aTag in theTags:
if len(aTag) == 3 and (sTitle is None or sTitle == refTitle): if len(aTag) == 3 and (sTitle is None or sTitle == refTitle):
theRefs[aTag[1]].append(aTag[2]) theRefs[aTag[1]].append(aTag[2])
@@ -614,9 +614,9 @@ class NWIndex():
def getNovelData(self, tHandle, sTitle): def getNovelData(self, tHandle, sTitle):
"""Return the novel data of a given handle and title. """Return the novel data of a given handle and title.
""" """
if tHandle in self.novelIndex: if tHandle in self._novelIndex:
if sTitle in self.novelIndex[tHandle]: if sTitle in self._novelIndex[tHandle]:
return self.novelIndex[tHandle][sTitle] return self._novelIndex[tHandle][sTitle]
return None return None
def getBackReferenceList(self, tHandle): def getBackReferenceList(self, tHandle):
@@ -628,14 +628,14 @@ class NWIndex():
return theRefs return theRefs
theTags = set() theTags = set()
for tTag in self.tagIndex: for tTag in self._tagIndex:
if tHandle == self.tagIndex[tTag][1]: if tHandle == self._tagIndex[tTag][1]:
theTags.add(tTag) theTags.add(tTag)
if theTags: if theTags:
for tHandle in self.refIndex: for tHandle in self._refIndex:
for sTitle in self.refIndex[tHandle]: for sTitle in self._refIndex[tHandle]:
for _, _, tTag in self.refIndex[tHandle][sTitle]["tags"]: for _, _, tTag in self._refIndex[tHandle][sTitle]["tags"]:
if tTag in theTags and tHandle not in theRefs: if tTag in theTags and tHandle not in theRefs:
theRefs[tHandle] = sTitle theRefs[tHandle] = sTitle
@@ -644,8 +644,8 @@ class NWIndex():
def getTagSource(self, theTag): def getTagSource(self, theTag):
"""Return the source location of a given tag. """Return the source location of a given tag.
""" """
if theTag in self.tagIndex: if theTag in self._tagIndex:
theRef = self.tagIndex[theTag] theRef = self._tagIndex[theTag]
if len(theRef) == 4: if len(theRef) == 4:
return theRef[1], theRef[0], theRef[3] return theRef[1], theRef[0], theRef[3]
return None, 0, "T000000" return None, 0, "T000000"
+102 -102
View File
@@ -56,30 +56,30 @@ def testCoreIndex_LoadSave(monkeypatch, nwLipsum, dummyGUI, outDir, refDir):
assert theIndex.saveIndex() assert theIndex.saveIndex()
# Take a copy of the index # Take a copy of the index
tagIndex = str(theIndex.tagIndex) tagIndex = str(theIndex._tagIndex)
refIndex = str(theIndex.refIndex) refIndex = str(theIndex._refIndex)
novelIndex = str(theIndex.novelIndex) novelIndex = str(theIndex._novelIndex)
noteIndex = str(theIndex.noteIndex) noteIndex = str(theIndex._noteIndex)
textCounts = str(theIndex.textCounts) textCounts = str(theIndex._textCounts)
# Delete a handle # Delete a handle
assert theIndex.tagIndex.get("Bod", None) is not None assert theIndex._tagIndex.get("Bod", None) is not None
assert theIndex.refIndex.get("4c4f28287af27", None) is not None assert theIndex._refIndex.get("4c4f28287af27", None) is not None
assert theIndex.noteIndex.get("4c4f28287af27", None) is not None assert theIndex._noteIndex.get("4c4f28287af27", None) is not None
assert theIndex.textCounts.get("4c4f28287af27", None) is not None assert theIndex._textCounts.get("4c4f28287af27", None) is not None
theIndex.deleteHandle("4c4f28287af27") theIndex.deleteHandle("4c4f28287af27")
assert theIndex.tagIndex.get("Bod", None) is None assert theIndex._tagIndex.get("Bod", None) is None
assert theIndex.refIndex.get("4c4f28287af27", None) is None assert theIndex._refIndex.get("4c4f28287af27", None) is None
assert theIndex.noteIndex.get("4c4f28287af27", None) is None assert theIndex._noteIndex.get("4c4f28287af27", None) is None
assert theIndex.textCounts.get("4c4f28287af27", None) is None assert theIndex._textCounts.get("4c4f28287af27", None) is None
# Clear the index # Clear the index
theIndex.clearIndex() theIndex.clearIndex()
assert not theIndex.tagIndex assert not theIndex._tagIndex
assert not theIndex.refIndex assert not theIndex._refIndex
assert not theIndex.novelIndex assert not theIndex._novelIndex
assert not theIndex.noteIndex assert not theIndex._noteIndex
assert not theIndex.textCounts assert not theIndex._textCounts
# Make the load fail # Make the load fail
monkeypatch.setattr(json, "load", doPanic) monkeypatch.setattr(json, "load", doPanic)
@@ -89,46 +89,46 @@ def testCoreIndex_LoadSave(monkeypatch, nwLipsum, dummyGUI, outDir, refDir):
monkeypatch.undo() monkeypatch.undo()
assert theIndex.loadIndex() assert theIndex.loadIndex()
assert str(theIndex.tagIndex) == tagIndex assert str(theIndex._tagIndex) == tagIndex
assert str(theIndex.refIndex) == refIndex assert str(theIndex._refIndex) == refIndex
assert str(theIndex.novelIndex) == novelIndex assert str(theIndex._novelIndex) == novelIndex
assert str(theIndex.noteIndex) == noteIndex assert str(theIndex._noteIndex) == noteIndex
assert str(theIndex.textCounts) == textCounts assert str(theIndex._textCounts) == textCounts
# Break the index and check that we notice # Break the index and check that we notice
assert not theIndex.indexBroken assert not theIndex.indexBroken
theIndex.tagIndex["Bod"].append("Stuff") # No longer len() == 4 theIndex._tagIndex["Bod"].append("Stuff") # No longer len() == 4
theIndex.checkIndex() theIndex.checkIndex()
assert theIndex.indexBroken assert theIndex.indexBroken
assert theIndex.loadIndex() assert theIndex.loadIndex()
assert not theIndex.indexBroken assert not theIndex.indexBroken
theIndex.refIndex["fb609cd8319dc"]["T000001"]["tags"].append("Stuff") # No longer len() == 3 theIndex._refIndex["fb609cd8319dc"]["T000001"]["tags"].append("Stuff") # No longer len() == 3
theIndex.checkIndex() theIndex.checkIndex()
assert theIndex.indexBroken assert theIndex.indexBroken
assert theIndex.loadIndex() assert theIndex.loadIndex()
assert not theIndex.indexBroken assert not theIndex.indexBroken
theIndex.novelIndex["7a992350f3eb6"]["T000001"]["Stuff"] = "" # No longer len(keys()) == 8 theIndex._novelIndex["7a992350f3eb6"]["T000001"]["Stuff"] = "" # No longer len(keys()) == 8
theIndex.checkIndex() theIndex.checkIndex()
assert theIndex.indexBroken assert theIndex.indexBroken
assert theIndex.loadIndex() assert theIndex.loadIndex()
assert not theIndex.indexBroken assert not theIndex.indexBroken
theIndex.noteIndex["4c4f28287af27"]["T000001"]["Stuff"] = "" # No longer len(keys()) == 8 theIndex._noteIndex["4c4f28287af27"]["T000001"]["Stuff"] = "" # No longer len(keys()) == 8
theIndex.checkIndex() theIndex.checkIndex()
assert theIndex.indexBroken assert theIndex.indexBroken
assert theIndex.loadIndex() assert theIndex.loadIndex()
assert not theIndex.indexBroken assert not theIndex.indexBroken
theIndex.textCounts["7a992350f3eb6"].append("Stuff") # No longer len() == 3 theIndex._textCounts["7a992350f3eb6"].append("Stuff") # No longer len() == 3
theIndex.checkIndex() theIndex.checkIndex()
assert theIndex.indexBroken assert theIndex.indexBroken
# Make the try/except trigger as well # Make the try/except trigger as well
assert theIndex.loadIndex() assert theIndex.loadIndex()
assert not theIndex.indexBroken assert not theIndex.indexBroken
theIndex.refIndex["fb609cd8319dc"]["T000001"] = {"tagssss": []} # Wrong key name theIndex._refIndex["fb609cd8319dc"]["T000001"] = {"tagssss": []} # Wrong key name
theIndex.checkIndex() theIndex.checkIndex()
assert theIndex.indexBroken assert theIndex.indexBroken
@@ -217,7 +217,7 @@ def testCoreIndex_CheckThese(nwMinimal, dummyGUI):
"# Hello World!\n" "# Hello World!\n"
"@pov: Jane" "@pov: Jane"
)) ))
assert theIndex.tagIndex == {"Jane": [2, cHandle, "CHARACTER", "T000001"]} assert theIndex._tagIndex == {"Jane": [2, cHandle, "CHARACTER", "T000001"]}
assert theIndex.getNovelData(nHandle, "T000001")["title"] == "Hello World!" assert theIndex.getNovelData(nHandle, "T000001")["title"] == "Hello World!"
assert theIndex.novelChangedSince(0) assert theIndex.novelChangedSince(0)
@@ -293,7 +293,7 @@ def testCoreIndex_ScanText(nwMinimal, dummyGUI):
"This is a story about Jane Smith.\n\n" "This is a story about Jane Smith.\n\n"
"Well, not really.\n" "Well, not really.\n"
)) ))
assert str(theIndex.tagIndex) == "{'Jane': [2, '%s', 'CHARACTER', 'T000001']}" % cHandle assert str(theIndex._tagIndex) == "{'Jane': [2, '%s', 'CHARACTER', 'T000001']}" % cHandle
assert theIndex.getNovelData(nHandle, "T000001")["title"] == "Hello World!" assert theIndex.getNovelData(nHandle, "T000001")["title"] == "Hello World!"
# Check that title sections are indexed properly # Check that title sections are indexed properly
@@ -313,68 +313,68 @@ def testCoreIndex_ScanText(nwMinimal, dummyGUI):
"##### Title Five\n\n" # Not interpreted as a title, the hashes is counted as a word "##### Title Five\n\n" # Not interpreted as a title, the hashes is counted as a word
"Paragraph Five.\n\n" "Paragraph Five.\n\n"
)) ))
assert theIndex.refIndex[nHandle].get("T000000", None) is not None # Always there assert theIndex._refIndex[nHandle].get("T000000", None) is not None # Always there
assert theIndex.refIndex[nHandle].get("T000001", None) is not None # Heading 1 assert theIndex._refIndex[nHandle].get("T000001", None) is not None # Heading 1
assert theIndex.refIndex[nHandle].get("T000002", None) is None assert theIndex._refIndex[nHandle].get("T000002", None) is None
assert theIndex.refIndex[nHandle].get("T000003", None) is None assert theIndex._refIndex[nHandle].get("T000003", None) is None
assert theIndex.refIndex[nHandle].get("T000004", None) is None assert theIndex._refIndex[nHandle].get("T000004", None) is None
assert theIndex.refIndex[nHandle].get("T000005", None) is None assert theIndex._refIndex[nHandle].get("T000005", None) is None
assert theIndex.refIndex[nHandle].get("T000006", None) is None assert theIndex._refIndex[nHandle].get("T000006", None) is None
assert theIndex.refIndex[nHandle].get("T000007", None) is not None # Heading 2 assert theIndex._refIndex[nHandle].get("T000007", None) is not None # Heading 2
assert theIndex.refIndex[nHandle].get("T000008", None) is None assert theIndex._refIndex[nHandle].get("T000008", None) is None
assert theIndex.refIndex[nHandle].get("T000009", None) is None assert theIndex._refIndex[nHandle].get("T000009", None) is None
assert theIndex.refIndex[nHandle].get("T000010", None) is None assert theIndex._refIndex[nHandle].get("T000010", None) is None
assert theIndex.refIndex[nHandle].get("T000011", None) is None assert theIndex._refIndex[nHandle].get("T000011", None) is None
assert theIndex.refIndex[nHandle].get("T000012", None) is None assert theIndex._refIndex[nHandle].get("T000012", None) is None
assert theIndex.refIndex[nHandle].get("T000013", None) is not None # Heading 3 assert theIndex._refIndex[nHandle].get("T000013", None) is not None # Heading 3
assert theIndex.refIndex[nHandle].get("T000014", None) is None assert theIndex._refIndex[nHandle].get("T000014", None) is None
assert theIndex.refIndex[nHandle].get("T000015", None) is None assert theIndex._refIndex[nHandle].get("T000015", None) is None
assert theIndex.refIndex[nHandle].get("T000016", None) is None assert theIndex._refIndex[nHandle].get("T000016", None) is None
assert theIndex.refIndex[nHandle].get("T000017", None) is None assert theIndex._refIndex[nHandle].get("T000017", None) is None
assert theIndex.refIndex[nHandle].get("T000018", None) is None assert theIndex._refIndex[nHandle].get("T000018", None) is None
assert theIndex.refIndex[nHandle].get("T000019", None) is not None # Heading 4 assert theIndex._refIndex[nHandle].get("T000019", None) is not None # Heading 4
assert theIndex.refIndex[nHandle].get("T000020", None) is None assert theIndex._refIndex[nHandle].get("T000020", None) is None
assert theIndex.refIndex[nHandle].get("T000021", None) is None assert theIndex._refIndex[nHandle].get("T000021", None) is None
assert theIndex.refIndex[nHandle].get("T000022", None) is None assert theIndex._refIndex[nHandle].get("T000022", None) is None
assert theIndex.refIndex[nHandle].get("T000023", None) is None assert theIndex._refIndex[nHandle].get("T000023", None) is None
assert theIndex.refIndex[nHandle].get("T000024", None) is None assert theIndex._refIndex[nHandle].get("T000024", None) is None
assert theIndex.refIndex[nHandle].get("T000025", None) is None assert theIndex._refIndex[nHandle].get("T000025", None) is None
assert theIndex.refIndex[nHandle].get("T000026", None) is None assert theIndex._refIndex[nHandle].get("T000026", None) is None
assert theIndex.novelIndex[nHandle]["T000001"]["level"] == "H1" assert theIndex._novelIndex[nHandle]["T000001"]["level"] == "H1"
assert theIndex.novelIndex[nHandle]["T000007"]["level"] == "H2" assert theIndex._novelIndex[nHandle]["T000007"]["level"] == "H2"
assert theIndex.novelIndex[nHandle]["T000013"]["level"] == "H3" assert theIndex._novelIndex[nHandle]["T000013"]["level"] == "H3"
assert theIndex.novelIndex[nHandle]["T000019"]["level"] == "H4" assert theIndex._novelIndex[nHandle]["T000019"]["level"] == "H4"
assert theIndex.novelIndex[nHandle]["T000001"]["title"] == "Title One" assert theIndex._novelIndex[nHandle]["T000001"]["title"] == "Title One"
assert theIndex.novelIndex[nHandle]["T000007"]["title"] == "Title Two" assert theIndex._novelIndex[nHandle]["T000007"]["title"] == "Title Two"
assert theIndex.novelIndex[nHandle]["T000013"]["title"] == "Title Three" assert theIndex._novelIndex[nHandle]["T000013"]["title"] == "Title Three"
assert theIndex.novelIndex[nHandle]["T000019"]["title"] == "Title Four" assert theIndex._novelIndex[nHandle]["T000019"]["title"] == "Title Four"
assert theIndex.novelIndex[nHandle]["T000001"]["layout"] == "SCENE" assert theIndex._novelIndex[nHandle]["T000001"]["layout"] == "SCENE"
assert theIndex.novelIndex[nHandle]["T000007"]["layout"] == "SCENE" assert theIndex._novelIndex[nHandle]["T000007"]["layout"] == "SCENE"
assert theIndex.novelIndex[nHandle]["T000013"]["layout"] == "SCENE" assert theIndex._novelIndex[nHandle]["T000013"]["layout"] == "SCENE"
assert theIndex.novelIndex[nHandle]["T000019"]["layout"] == "SCENE" assert theIndex._novelIndex[nHandle]["T000019"]["layout"] == "SCENE"
assert theIndex.novelIndex[nHandle]["T000001"]["synopsis"] == "Synopsis One." assert theIndex._novelIndex[nHandle]["T000001"]["synopsis"] == "Synopsis One."
assert theIndex.novelIndex[nHandle]["T000007"]["synopsis"] == "Synopsis Two." assert theIndex._novelIndex[nHandle]["T000007"]["synopsis"] == "Synopsis Two."
assert theIndex.novelIndex[nHandle]["T000013"]["synopsis"] == "Synopsis Three." assert theIndex._novelIndex[nHandle]["T000013"]["synopsis"] == "Synopsis Three."
assert theIndex.novelIndex[nHandle]["T000019"]["synopsis"] == "Synopsis Four." assert theIndex._novelIndex[nHandle]["T000019"]["synopsis"] == "Synopsis Four."
assert theIndex.novelIndex[nHandle]["T000001"]["cCount"] == 23 assert theIndex._novelIndex[nHandle]["T000001"]["cCount"] == 23
assert theIndex.novelIndex[nHandle]["T000007"]["cCount"] == 23 assert theIndex._novelIndex[nHandle]["T000007"]["cCount"] == 23
assert theIndex.novelIndex[nHandle]["T000013"]["cCount"] == 27 assert theIndex._novelIndex[nHandle]["T000013"]["cCount"] == 27
assert theIndex.novelIndex[nHandle]["T000019"]["cCount"] == 56 assert theIndex._novelIndex[nHandle]["T000019"]["cCount"] == 56
assert theIndex.novelIndex[nHandle]["T000001"]["wCount"] == 4 assert theIndex._novelIndex[nHandle]["T000001"]["wCount"] == 4
assert theIndex.novelIndex[nHandle]["T000007"]["wCount"] == 4 assert theIndex._novelIndex[nHandle]["T000007"]["wCount"] == 4
assert theIndex.novelIndex[nHandle]["T000013"]["wCount"] == 4 assert theIndex._novelIndex[nHandle]["T000013"]["wCount"] == 4
assert theIndex.novelIndex[nHandle]["T000019"]["wCount"] == 9 assert theIndex._novelIndex[nHandle]["T000019"]["wCount"] == 9
assert theIndex.novelIndex[nHandle]["T000001"]["pCount"] == 1 assert theIndex._novelIndex[nHandle]["T000001"]["pCount"] == 1
assert theIndex.novelIndex[nHandle]["T000007"]["pCount"] == 1 assert theIndex._novelIndex[nHandle]["T000007"]["pCount"] == 1
assert theIndex.novelIndex[nHandle]["T000013"]["pCount"] == 1 assert theIndex._novelIndex[nHandle]["T000013"]["pCount"] == 1
assert theIndex.novelIndex[nHandle]["T000019"]["pCount"] == 3 assert theIndex._novelIndex[nHandle]["T000019"]["pCount"] == 3
assert theIndex.scanText(cHandle, ( assert theIndex.scanText(cHandle, (
"# Title One\n\n" "# Title One\n\n"
@@ -382,22 +382,22 @@ def testCoreIndex_ScanText(nwMinimal, dummyGUI):
"% synopsis: Synopsis One.\n\n" "% synopsis: Synopsis One.\n\n"
"Paragraph One.\n\n" "Paragraph One.\n\n"
)) ))
assert theIndex.refIndex[cHandle].get("T000000", None) is not None assert theIndex._refIndex[cHandle].get("T000000", None) is not None
assert theIndex.refIndex[cHandle].get("T000001", None) is not None assert theIndex._refIndex[cHandle].get("T000001", None) is not None
assert theIndex.refIndex[cHandle].get("T000002", None) is None assert theIndex._refIndex[cHandle].get("T000002", None) is None
assert theIndex.refIndex[cHandle].get("T000003", None) is None assert theIndex._refIndex[cHandle].get("T000003", None) is None
assert theIndex.refIndex[cHandle].get("T000004", None) is None assert theIndex._refIndex[cHandle].get("T000004", None) is None
assert theIndex.refIndex[cHandle].get("T000005", None) is None assert theIndex._refIndex[cHandle].get("T000005", None) is None
assert theIndex.refIndex[cHandle].get("T000006", None) is None assert theIndex._refIndex[cHandle].get("T000006", None) is None
assert theIndex.refIndex[cHandle].get("T000007", None) is None assert theIndex._refIndex[cHandle].get("T000007", None) is None
assert theIndex.noteIndex[cHandle]["T000001"]["level"] == "H1" assert theIndex._noteIndex[cHandle]["T000001"]["level"] == "H1"
assert theIndex.noteIndex[cHandle]["T000001"]["title"] == "Title One" assert theIndex._noteIndex[cHandle]["T000001"]["title"] == "Title One"
assert theIndex.noteIndex[cHandle]["T000001"]["layout"] == "NOTE" assert theIndex._noteIndex[cHandle]["T000001"]["layout"] == "NOTE"
assert theIndex.noteIndex[cHandle]["T000001"]["synopsis"] == "Synopsis One." assert theIndex._noteIndex[cHandle]["T000001"]["synopsis"] == "Synopsis One."
assert theIndex.noteIndex[cHandle]["T000001"]["cCount"] == 23 assert theIndex._noteIndex[cHandle]["T000001"]["cCount"] == 23
assert theIndex.noteIndex[cHandle]["T000001"]["wCount"] == 4 assert theIndex._noteIndex[cHandle]["T000001"]["wCount"] == 4
assert theIndex.noteIndex[cHandle]["T000001"]["pCount"] == 1 assert theIndex._noteIndex[cHandle]["T000001"]["pCount"] == 1
assert theIndex.scanText(sHandle, ( assert theIndex.scanText(sHandle, (
"# Title One\n\n" "# Title One\n\n"
@@ -407,7 +407,7 @@ def testCoreIndex_ScanText(nwMinimal, dummyGUI):
"% synopsis: Synopsis One.\n\n" "% synopsis: Synopsis One.\n\n"
"Paragraph One.\n\n" "Paragraph One.\n\n"
)) ))
assert theIndex.refIndex[sHandle]["T000001"]["tags"] == ( assert theIndex._refIndex[sHandle]["T000001"]["tags"] == (
[[3, "@pov", "One"], [5, "@char", "Two"]] [[3, "@pov", "One"], [5, "@char", "Two"]]
) )
+4 -4
View File
@@ -26,11 +26,11 @@ def testGuiViewer_Main(qtbot, monkeypatch, nwGUI, nwLipsum):
assert nwGUI.openProject(nwLipsum) assert nwGUI.openProject(nwLipsum)
# Rebuild the index as it isn't automatically copied # Rebuild the index as it isn't automatically copied
assert nwGUI.theIndex.tagIndex == {} assert nwGUI.theIndex._tagIndex == {}
assert nwGUI.theIndex.refIndex == {} assert nwGUI.theIndex._refIndex == {}
nwGUI.mainMenu.aRebuildIndex.activate(QAction.Trigger) nwGUI.mainMenu.aRebuildIndex.activate(QAction.Trigger)
assert nwGUI.theIndex.tagIndex != {} assert nwGUI.theIndex._tagIndex != {}
assert nwGUI.theIndex.refIndex != {} assert nwGUI.theIndex._refIndex != {}
# Select a document in the project tree # Select a document in the project tree
assert nwGUI.treeView.setSelectedHandle("88243afbe5ed8") assert nwGUI.treeView.setSelectedHandle("88243afbe5ed8")