X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=manga%2Flib.py;h=2a11cb10d41f0698591e667f1eea436253942913;hb=53395a9dd29c3dfdf3def032e85d8c3a90e1bf22;hp=8ec9c2eb9f7666eb1383caa57e579fb956b81a3a;hpb=af7300680e36fb1280cf248b897069ae5af18b08;p=automanga.git diff --git a/manga/lib.py b/manga/lib.py index 8ec9c2e..2a11cb1 100644 --- a/manga/lib.py +++ b/manga/lib.py @@ -36,7 +36,11 @@ class pagetree(object): `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 @@ -52,10 +56,7 @@ class pagetree(object): 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. @@ -115,7 +116,9 @@ class imgstream(object): when exiting the with-scope. All imgstreams should contain an attribute `ctype', being the - Content-Type of the image being read by the stream.""" + Content-Type of the image being read by the stream, and `clen`, + being either an int describing the total number of bytes in the + stream, or None if the value is not known in advance.""" def __enter__(self): return self @@ -160,7 +163,7 @@ class cursor(object): raise StopIteration() def prev(self): - for n, i in reversed(self.cur,stack): + for n, i in reversed(self.cur.stack): if i > 0: self.cur = self.descend(n[i - 1]) return self.cur @@ -168,3 +171,18 @@ class cursor(object): 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()