Improve keyword indexer and extend test

This commit is contained in:
Veronica K. B. Olsen
2021-02-23 22:28:02 +01:00
parent b9d344c7d9
commit c2e3fef7fc
2 changed files with 15 additions and 27 deletions
+13 -27
View File
@@ -321,8 +321,7 @@ class NWIndex():
nTitle = nLine nTitle = nLine
elif aLine.startswith("@"): elif aLine.startswith("@"):
self._indexNoteRef(tHandle, aLine, nLine, nTitle) self._indexKeyword(tHandle, aLine, nLine, nTitle, itemClass)
self._indexTag(tHandle, aLine, nLine, nTitle, itemClass)
elif aLine.startswith("%"): elif aLine.startswith("%"):
if nTitle > 0: if nTitle > 0:
@@ -463,41 +462,28 @@ class NWIndex():
self._noteIndex[tHandle][sTitle]["updated"] = round(time()) self._noteIndex[tHandle][sTitle]["updated"] = round(time())
return return
def _indexNoteRef(self, tHandle, aLine, nLine, nTitle): def _indexKeyword(self, tHandle, aLine, nLine, nTitle, itemClass):
"""Validate and save the information about a reference to a tag """Validate and save the information about a reference to a tag
in another file. in another file.
""" """
isValid, theBits, _ = self.scanThis(aLine) isValid, theBits, _ = self.scanThis(aLine)
if not isValid or len(theBits) == 0: if not isValid or len(theBits) < 2:
return False logger.warning("Skipping keyword with %d value(s) in %s" % (len(theBits), tHandle))
return
sTitle = "T%06d" % nTitle
if sTitle not in self._refIndex[tHandle]:
return False
if theBits[0] == nwKeyWords.TAG_KEY:
return False
if theBits[0] not in nwKeyWords.VALID_KEYS: if theBits[0] not in nwKeyWords.VALID_KEYS:
return False logger.warning("Skipping invalid keyword '%s' in %s" % (theBits[0], tHandle))
return
for aVal in theBits[1:]:
self._refIndex[tHandle][sTitle]["tags"].append([nLine, theBits[0], aVal])
return True
def _indexTag(self, tHandle, aLine, nLine, nTitle, itemClass):
"""Validate and save the information from a tag.
"""
isValid, theBits, thePos = self.scanThis(aLine)
if not isValid or len(theBits) != 2:
return False
sTitle = "T%06d" % nTitle
if theBits[0] == nwKeyWords.TAG_KEY: if theBits[0] == nwKeyWords.TAG_KEY:
sTitle = "T%06d" % nTitle
self._tagIndex[theBits[1]] = [nLine, tHandle, itemClass.name, sTitle] self._tagIndex[theBits[1]] = [nLine, tHandle, itemClass.name, sTitle]
return True elif sTitle in self._refIndex[tHandle]:
for aVal in theBits[1:]:
self._refIndex[tHandle][sTitle]["tags"].append([nLine, theBits[0], aVal])
return
## ##
# Check @ Lines # Check @ Lines
+2
View File
@@ -199,6 +199,8 @@ def testCoreIndex_CheckThese(nwMinimal, dummyGUI):
assert theIndex.scanText(cHandle, ( assert theIndex.scanText(cHandle, (
"# Jane Smith\n" "# Jane Smith\n"
"@tag: Jane\n" "@tag: Jane\n"
"@tag:\n"
"@:\n"
)) ))
assert theIndex.scanText(nHandle, ( assert theIndex.scanText(nHandle, (
"# Hello World!\n" "# Hello World!\n"