From 1f6eda3ff18926f44247090b83807b7817ed9f84 Mon Sep 17 00:00:00 2001 From: "Marshall T. Vandegrift" Date: Thu, 18 Dec 2008 17:20:15 -0500 Subject: [PATCH] Add exists() method to the LitReader (qua OEB-archive). --- src/calibre/ebooks/lit/reader.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/lit/reader.py b/src/calibre/ebooks/lit/reader.py index 1abb4704e3..8b8d37cd4d 100644 --- a/src/calibre/ebooks/lit/reader.py +++ b/src/calibre/ebooks/lit/reader.py @@ -12,6 +12,7 @@ import functools import re from urlparse import urldefrag from cStringIO import StringIO +from urllib import unquote as urlunquote from lxml import etree from calibre.ebooks.lit import LitError from calibre.ebooks.lit.maps import OPF_MAP, HTML_MAP @@ -811,9 +812,12 @@ class LitReader(object): def namelist(self): return self._litfile.paths.keys() + + def exists(self, name): + return urlunquote(name) in self._litfile.paths def read_xml(self, name): - entry = self._litfile.paths[name] if name else None + entry = self._litfile.paths[urlunquote(name)] if name else None if entry is None: content = self._read_meta() elif 'spine' in entry.state: @@ -826,7 +830,7 @@ class LitReader(object): return content def read(self, name, pretty_print=False): - entry = self._litfile.paths[name] if name else None + entry = self._litfile.paths[urlunquote(name)] if name else None if entry is None: meta = self._read_meta() content = OPF_DECL + etree.tostring(