This commit is contained in:
Kovid Goyal 2012-01-18 10:49:34 +05:30
parent 2f4941613c
commit f5ba57a0fe
2 changed files with 24 additions and 24 deletions

View File

@ -21,73 +21,73 @@ def resolved(f):
return wrapper return wrapper
class MutableBaseMixin(object): # {{{ class MutableBaseMixin(object): # {{{
@resolved @resolved
def __str__(self): def __str__(self):
return str(self.values) return str(self._values)
@resolved @resolved
def __repr__(self): def __repr__(self):
return repr(self.values) return repr(self._values)
@resolved @resolved
def __unicode__(self): def __unicode__(self):
return unicode(self.values) return unicode(self._values)
@resolved @resolved
def __len__(self): def __len__(self):
return len(self.values) return len(self._values)
@resolved @resolved
def __iter__(self): def __iter__(self):
return iter(self.values) return iter(self._values)
@resolved @resolved
def __contains__(self, key): def __contains__(self, key):
return key in self.values return key in self._values
@resolved @resolved
def __getitem__(self, fmt): def __getitem__(self, fmt):
return self.values[fmt] return self._values[fmt]
@resolved @resolved
def __setitem__(self, key, val): def __setitem__(self, key, val):
self.values[key] = val self._values[key] = val
@resolved @resolved
def __delitem__(self, key): def __delitem__(self, key):
del self.values[key] del self._values[key]
# }}} # }}}
class FormatMetadata(MutableBaseMixin, MutableMapping): # {{{ class FormatMetadata(MutableBaseMixin, MutableMapping): # {{{
def __init__(self, db, id_, formats): def __init__(self, db, id_, formats):
self.dbwref = weakref.ref(db) self._dbwref = weakref.ref(db)
self.id_ = id_ self._id = id_
self.formats = formats self._formats = formats
self.values = {}
def _resolve(self): def _resolve(self):
db = self.dbwref() db = self._dbwref()
for f in self.formats: self._values = {}
for f in self._formats:
try: try:
self.values[f] = db.format_metadata(self.id_, f) self._values[f] = db.format_metadata(self._id, f)
except: except:
pass pass
class FormatsList(MutableBaseMixin, MutableSequence): class FormatsList(MutableBaseMixin, MutableSequence):
def __init__(self, formats, format_metadata): def __init__(self, formats, format_metadata):
self.formats = formats self._formats = formats
self.format_metadata = format_metadata self._format_metadata = format_metadata
self.values = []
def _resolve(self): def _resolve(self):
self.values = [f for f in self.formats if f in self.format_metadata] self._values = [f for f in self._formats if f in self._format_metadata]
@resolved
def insert(self, idx, val): def insert(self, idx, val):
self._resolve() self._values.insert(idx, val)
self.values.insert(idx, val)
# }}} # }}}

View File

@ -104,10 +104,10 @@ class CHMReader(CHMFile):
codecs.lookup(x) codecs.lookup(x)
enc = x enc = x
except: except:
enc = None enc = 'cp1252'
for path in self.Contents(): for path in self.Contents():
fpath = path fpath = path
if not isinstance(path, unicode) and enc: if not isinstance(path, unicode):
fpath = path.decode(enc) fpath = path.decode(enc)
lpath = os.path.join(output_dir, fpath) lpath = os.path.join(output_dir, fpath)
self._ensure_dir(lpath) self._ensure_dir(lpath)