`id', which should be a string that can be passed to the `byid'
function of its parent node to recover the node. Such string ID
should be more persistent than the node's numeric index in the
- parent."""
+ parent.
+
+ All pagetree objects should contain an attribute `name',
+ containing some human-readable Unicode representation of the
+ pagelist."""
def idlist(self):
"""Returns a list of the IDs necessary to resolve this node
from the root node."""
if len(self.stack) == 0:
- raise Exception("Cannot get ID list on root node.")
- return [n.id for n, i in self.stack[1:]] + [self.id]
+ return []
+ return self.stack[-1][0].idlist() + [self.id]
def byidlist(self, idlist):
if len(idlist) == 0:
class pagelist(pagetree):
"""Class representing a list of either pages, or nested
- pagelists. Might be, for instance, a volume or a chapter.
-
- All pagelists should contain an attribute `name', containing some
- human-readable Unicode representation of the pagelist."""
+ pagelists. Might be, for instance, a volume or a chapter."""
def __len__(self):
"""Return the number of (direct) sub-nodes in this pagelist.
def __iter__(self):
return self
+
+def _lazymod(name):
+ return __import__(name, fromlist=["dummy"])
+class _lazydict(object):
+ def __init__(self):
+ self.bk = {}
+ def __setitem__(self, key, val):
+ self.bk[key] = "u", val
+ def __getitem__(self, key):
+ st, v = self.bk[key]
+ if st == "u":
+ v = self.bk[key] = v()
+ return v
+libraries = _lazydict()
+libraries["mf"] = lambda: _lazymod("manga.mangafox").library()