def unpackData(self, data): """Iterate through the tagsIndex loaded from cache and check that it's valid. """ self._tags = {} if not isinstance(data, dict): raise ValueError("tagsIndex is not a dict") for tagKey, tagData in data.items(): if not isinstance(tagKey, str): raise ValueError("tagsIndex keys must be a strings") if "handle" not in tagData: raise KeyError("A tagIndex item is missing a handle entry") if "heading" not in tagData: raise KeyError("A tagIndex item is missing a heading entry") if "class" not in tagData: raise KeyError("A tagIndex item is missing a class entry") if not isHandle(tagData["handle"]): raise ValueError("tagsIndex handle must be a handle") if not isTitleTag(tagData["heading"]): raise ValueError("tagsIndex heading must be a title tag") if not isItemClass(tagData["class"]): raise ValueError("tagsIndex handle must be an nwItemClass") self._tags = data return
def setClass(self, value): """Set the item class from either a proper nwItemClass, or set it from a string representing an nwItemClass. """ if isinstance(value, nwItemClass): self._class = value elif isItemClass(value): self._class = nwItemClass[value] else: logger.error("Unrecognised item class '%s'", value) self._class = nwItemClass.NO_CLASS return
def _checkTagIndex(self): """Scan the tag index for errors. Warning: This function raises exceptions. """ for tTag in self._tagIndex: if not isinstance(tTag, str): raise KeyError("tagIndex key is not a string") tEntry = self._tagIndex[tTag] if len(tEntry) != 4: raise IndexError("tagIndex[a] expected 4 values") if not isinstance(tEntry[0], int): raise ValueError("tagIndex[a][0] is not an integer") if not isHandle(tEntry[1]): raise ValueError("tagIndex[a][1] is not a handle") if not isItemClass(tEntry[2]): raise ValueError("tagIndex[a][2] is not an nwItemClass") if not isTitleTag(tEntry[3]): raise ValueError("tagIndex[a][3] is not a title tag") return
def testBaseCommon_IsItemClass(): """Test the isItemClass function. """ assert isItemClass("NO_CLASS") is True assert isItemClass("NOVEL") is True assert isItemClass("PLOT") is True assert isItemClass("CHARACTER") is True assert isItemClass("WORLD") is True assert isItemClass("TIMELINE") is True assert isItemClass("OBJECT") is True assert isItemClass("ENTITY") is True assert isItemClass("CUSTOM") is True assert isItemClass("ARCHIVE") is True assert isItemClass("TRASH") is True # Invalid assert isItemClass("None") is False assert isItemClass(None) is False assert isItemClass("STUFF") is False