Rename outdated function parameter in index class
This commit is contained in:
+15
-12
@@ -517,28 +517,28 @@ class NWIndex:
|
||||
return None
|
||||
|
||||
def novelStructure(
|
||||
self, rootHandle: str | None = None, skipExcl: bool = True
|
||||
self, rootHandle: str | None = None, activeOnly: bool = True
|
||||
) -> Iterator[tuple[str, str, str, IndexHeading]]:
|
||||
"""Iterate over all titles in the novel, in the correct order as
|
||||
they appear in the tree view and in the respective document
|
||||
files, but skipping all note files.
|
||||
"""
|
||||
structure = self._itemIndex.iterNovelStructure(rHandle=rootHandle, skipExcl=skipExcl)
|
||||
structure = self._itemIndex.iterNovelStructure(rHandle=rootHandle, activeOnly=activeOnly)
|
||||
for tHandle, sTitle, hItem in structure:
|
||||
yield f"{tHandle}:{sTitle}", tHandle, sTitle, hItem
|
||||
return
|
||||
|
||||
def getNovelWordCount(self, skipExcl: bool = True) -> int:
|
||||
def getNovelWordCount(self, activeOnly: bool = True) -> int:
|
||||
"""Count the number of words in the novel project."""
|
||||
wCount = 0
|
||||
for _, _, hItem in self._itemIndex.iterNovelStructure(skipExcl=skipExcl):
|
||||
for _, _, hItem in self._itemIndex.iterNovelStructure(activeOnly=activeOnly):
|
||||
wCount += hItem.wordCount
|
||||
return wCount
|
||||
|
||||
def getNovelTitleCounts(self, skipExcl: bool = True) -> list[int]:
|
||||
def getNovelTitleCounts(self, activeOnly: bool = True) -> list[int]:
|
||||
"""Count the number of titles in the novel project."""
|
||||
hCount = [0, 0, 0, 0, 0]
|
||||
for _, _, hItem in self._itemIndex.iterNovelStructure(skipExcl=skipExcl):
|
||||
for _, _, hItem in self._itemIndex.iterNovelStructure(activeOnly=activeOnly):
|
||||
iLevel = nwHeaders.H_LEVEL.get(hItem.level, 0)
|
||||
hCount[iLevel] += 1
|
||||
return hCount
|
||||
@@ -551,14 +551,14 @@ class NWIndex:
|
||||
return 0
|
||||
|
||||
def getTableOfContents(
|
||||
self, rHandle: str | None, maxDepth: int, skipExcl: bool = True
|
||||
self, rHandle: str | None, maxDepth: int, activeOnly: bool = True
|
||||
) -> list[tuple[str, int, str, int]]:
|
||||
"""Generate a table of contents up to a maximum depth."""
|
||||
tOrder = []
|
||||
tData = {}
|
||||
pKey = None
|
||||
for tHandle, sTitle, hItem in self._itemIndex.iterNovelStructure(
|
||||
rHandle=rHandle, skipExcl=skipExcl
|
||||
rHandle=rHandle, activeOnly=activeOnly
|
||||
):
|
||||
tKey = f"{tHandle}:{sTitle}"
|
||||
iLevel = nwHeaders.H_LEVEL.get(hItem.level, 0)
|
||||
@@ -646,12 +646,15 @@ class NWIndex:
|
||||
"""Return all tags based on itemClass."""
|
||||
return self._tagsIndex.filterTagNames(itemClass.name)
|
||||
|
||||
def getTagsData(self) -> Iterator[tuple[str, str, str, IndexItem | None, IndexHeading | None]]:
|
||||
def getTagsData(
|
||||
self, activeOnly: bool = True
|
||||
) -> Iterator[tuple[str, str, str, IndexItem | None, IndexHeading | None]]:
|
||||
"""Return all known tags."""
|
||||
for tag, data in self._tagsIndex.items():
|
||||
iItem = self._itemIndex[data.get("handle")]
|
||||
hItem = None if iItem is None else iItem[data.get("heading")]
|
||||
yield tag, data.get("name", ""), data.get("class", ""), iItem, hItem
|
||||
if not activeOnly or (iItem and iItem.item.isActive):
|
||||
yield tag, data.get("name", ""), data.get("class", ""), iItem, hItem
|
||||
return
|
||||
|
||||
def getSingleTag(self, tagKey: str) -> tuple[str, str, IndexItem | None, IndexHeading | None]:
|
||||
@@ -848,7 +851,7 @@ class ItemIndex:
|
||||
return
|
||||
|
||||
def iterNovelStructure(
|
||||
self, rHandle: str | None = None, skipExcl: bool = False
|
||||
self, rHandle: str | None = None, activeOnly: bool = False
|
||||
) -> Iterable[tuple[str, str, IndexHeading]]:
|
||||
"""Iterate over all items and headers in the novel structure for
|
||||
a given root handle, or for all if root handle is None.
|
||||
@@ -856,7 +859,7 @@ class ItemIndex:
|
||||
for tItem in self._project.tree:
|
||||
if tItem.isNoteLayout():
|
||||
continue
|
||||
if skipExcl and not tItem.isActive:
|
||||
if activeOnly and not tItem.isActive:
|
||||
continue
|
||||
|
||||
tHandle = tItem.itemHandle
|
||||
|
||||
@@ -674,7 +674,7 @@ class GuiNovelTree(QTreeWidget):
|
||||
tStart = time()
|
||||
logger.debug("Building novel tree for root item '%s'", rootHandle)
|
||||
|
||||
novStruct = SHARED.project.index.novelStructure(rootHandle=rootHandle, skipExcl=True)
|
||||
novStruct = SHARED.project.index.novelStructure(rootHandle=rootHandle, activeOnly=True)
|
||||
for tKey, tHandle, sTitle, novIdx in novStruct:
|
||||
if novIdx.level == "H0":
|
||||
continue
|
||||
|
||||
@@ -646,7 +646,7 @@ class GuiOutlineTree(QTreeWidget):
|
||||
headItem.setTextAlignment(
|
||||
self._colIdx[nwOutline.PCOUNT], Qt.AlignmentFlag.AlignRight)
|
||||
|
||||
novStruct = SHARED.project.index.novelStructure(rootHandle=rootHandle, skipExcl=True)
|
||||
novStruct = SHARED.project.index.novelStructure(rootHandle=rootHandle, activeOnly=True)
|
||||
for _, tHandle, sTitle, novIdx in novStruct:
|
||||
|
||||
iLevel = nwHeaders.H_LEVEL.get(novIdx.level, 0)
|
||||
|
||||
@@ -579,7 +579,7 @@ def testCoreIndex_ExtractData(mockGUI, fncPath, mockRnd):
|
||||
project.tree[nHandle].setActive(False) # type: ignore
|
||||
|
||||
keys = []
|
||||
for aKey, _, _, _ in index.novelStructure(skipExcl=False):
|
||||
for aKey, _, _, _ in index.novelStructure(activeOnly=False):
|
||||
keys.append(aKey)
|
||||
|
||||
assert keys == [
|
||||
@@ -590,7 +590,7 @@ def testCoreIndex_ExtractData(mockGUI, fncPath, mockRnd):
|
||||
]
|
||||
|
||||
keys = []
|
||||
for aKey, _, _, _ in index.novelStructure(skipExcl=True):
|
||||
for aKey, _, _, _ in index.novelStructure(activeOnly=True):
|
||||
keys.append(aKey)
|
||||
|
||||
assert keys == [
|
||||
@@ -761,7 +761,7 @@ def testCoreIndex_ExtractData(mockGUI, fncPath, mockRnd):
|
||||
assert index.scanText(sHandle, "### Scene One\n\n") # type: ignore
|
||||
assert index.scanText(tHandle, "### Scene Two\n\n") # type: ignore
|
||||
|
||||
assert [(h, t) for h, t, _ in index._itemIndex.iterNovelStructure(skipExcl=False)] == [
|
||||
assert [(h, t) for h, t, _ in index._itemIndex.iterNovelStructure(activeOnly=False)] == [
|
||||
(C.hTitlePage, "T0001"),
|
||||
(C.hChapterDoc, "T0001"),
|
||||
(C.hSceneDoc, "T0001"),
|
||||
@@ -772,7 +772,7 @@ def testCoreIndex_ExtractData(mockGUI, fncPath, mockRnd):
|
||||
(tHandle, "T0001"),
|
||||
]
|
||||
|
||||
assert [(h, t) for h, t, _ in index._itemIndex.iterNovelStructure(skipExcl=True)] == [
|
||||
assert [(h, t) for h, t, _ in index._itemIndex.iterNovelStructure(activeOnly=True)] == [
|
||||
(C.hTitlePage, "T0001"),
|
||||
(C.hChapterDoc, "T0001"),
|
||||
(C.hSceneDoc, "T0001"),
|
||||
@@ -783,7 +783,7 @@ def testCoreIndex_ExtractData(mockGUI, fncPath, mockRnd):
|
||||
|
||||
# Add a fake handle to the tree and check that it's ignored
|
||||
project.tree._order.append("0000000000000")
|
||||
assert [(h, t) for h, t, _ in index._itemIndex.iterNovelStructure(skipExcl=False)] == [
|
||||
assert [(h, t) for h, t, _ in index._itemIndex.iterNovelStructure(activeOnly=False)] == [
|
||||
(C.hTitlePage, "T0001"),
|
||||
(C.hChapterDoc, "T0001"),
|
||||
(C.hSceneDoc, "T0001"),
|
||||
@@ -796,22 +796,22 @@ def testCoreIndex_ExtractData(mockGUI, fncPath, mockRnd):
|
||||
project.tree._order.remove("0000000000000")
|
||||
|
||||
# Extract stats
|
||||
assert index.getNovelWordCount(skipExcl=False) == 43
|
||||
assert index.getNovelWordCount(skipExcl=True) == 15
|
||||
assert index.getNovelTitleCounts(skipExcl=False) == [0, 3, 2, 3, 0]
|
||||
assert index.getNovelTitleCounts(skipExcl=True) == [0, 1, 2, 3, 0]
|
||||
assert index.getNovelWordCount(activeOnly=False) == 43
|
||||
assert index.getNovelWordCount(activeOnly=True) == 15
|
||||
assert index.getNovelTitleCounts(activeOnly=False) == [0, 3, 2, 3, 0]
|
||||
assert index.getNovelTitleCounts(activeOnly=True) == [0, 1, 2, 3, 0]
|
||||
|
||||
# Table of Contents
|
||||
assert index.getTableOfContents(C.hNovelRoot, 0, skipExcl=True) == []
|
||||
assert index.getTableOfContents(C.hNovelRoot, 1, skipExcl=True) == [
|
||||
assert index.getTableOfContents(C.hNovelRoot, 0, activeOnly=True) == []
|
||||
assert index.getTableOfContents(C.hNovelRoot, 1, activeOnly=True) == [
|
||||
(f"{C.hTitlePage}:T0001", 1, "New Novel", 15),
|
||||
]
|
||||
assert index.getTableOfContents(C.hNovelRoot, 2, skipExcl=True) == [
|
||||
assert index.getTableOfContents(C.hNovelRoot, 2, activeOnly=True) == [
|
||||
(f"{C.hTitlePage}:T0001", 1, "New Novel", 5),
|
||||
(f"{C.hChapterDoc}:T0001", 2, "New Chapter", 4),
|
||||
(f"{hHandle}:T0001", 2, "Chapter One", 6),
|
||||
]
|
||||
assert index.getTableOfContents(C.hNovelRoot, 3, skipExcl=True) == [
|
||||
assert index.getTableOfContents(C.hNovelRoot, 3, activeOnly=True) == [
|
||||
(f"{C.hTitlePage}:T0001", 1, "New Novel", 5),
|
||||
(f"{C.hChapterDoc}:T0001", 2, "New Chapter", 2),
|
||||
(f"{C.hSceneDoc}:T0001", 3, "New Scene", 2),
|
||||
@@ -820,8 +820,8 @@ def testCoreIndex_ExtractData(mockGUI, fncPath, mockRnd):
|
||||
(f"{tHandle}:T0001", 3, "Scene Two", 2),
|
||||
]
|
||||
|
||||
assert index.getTableOfContents(C.hNovelRoot, 0, skipExcl=False) == []
|
||||
assert index.getTableOfContents(C.hNovelRoot, 1, skipExcl=False) == [
|
||||
assert index.getTableOfContents(C.hNovelRoot, 0, activeOnly=False) == []
|
||||
assert index.getTableOfContents(C.hNovelRoot, 1, activeOnly=False) == [
|
||||
(f"{C.hTitlePage}:T0001", 1, "New Novel", 9),
|
||||
(f"{nHandle}:T0001", 1, "Hello World!", 12),
|
||||
(f"{nHandle}:T0002", 1, "Hello World!", 22),
|
||||
@@ -1173,7 +1173,7 @@ def testCoreIndex_ItemIndex(mockGUI, fncPath, mockRnd):
|
||||
|
||||
# Skip excluded
|
||||
project.tree[sHandle].setActive(False) # type: ignore
|
||||
nStruct = list(itemIndex.iterNovelStructure(skipExcl=True))
|
||||
nStruct = list(itemIndex.iterNovelStructure(activeOnly=True))
|
||||
assert len(nStruct) == 3
|
||||
assert nStruct[0][0] == nHandle
|
||||
assert nStruct[1][0] == cHandle
|
||||
|
||||
Reference in New Issue
Block a user