def __init__(self, ncxidx, records, codec): super(NCXIndex, self).__init__(ncxidx, records, codec) self.records = [] if self.table is not None: NCXEntry = namedtuple( 'NCXEntry', 'index start length depth parent ' 'first_child last_child title pos_fid kind') for num, x in enumerate(iteritems(self.table)): text, tag_map = x entry = e = default_entry.copy() entry['name'] = text entry['num'] = num for tag in tag_fieldname_map: fieldname, i = tag_fieldname_map[tag] if tag in tag_map: fieldvalue = tag_map[tag][i] if tag == 6: # Appears to be an idx into the KF8 elems table with an # offset fieldvalue = tuple(tag_map[tag]) entry[fieldname] = fieldvalue for which, name in iteritems({ 3: 'text', 5: 'kind', 70: 'description', 71: 'author', 72: 'image_caption', 73: 'image_attribution' }): if tag == which: entry[name] = self.cncx.get( fieldvalue, default_entry[name]) def refindx(e, name): ans = e[name] if ans < 0: ans = None return ans entry = NCXEntry(start=e['pos'], index=e['num'], length=e['len'], depth=e['hlvl'], parent=refindx(e, 'parent'), first_child=refindx(e, 'child1'), last_child=refindx(e, 'childn'), title=e['text'], pos_fid=e['pos_fid'], kind=e['kind']) self.records.append(entry)
def __init__(self, ncxidx, records, codec): super(NCXIndex, self).__init__(ncxidx, records, codec) self.records = [] if self.table is not None: NCXEntry = namedtuple('NCXEntry', 'index start length depth parent ' 'first_child last_child title pos_fid kind') for num, x in enumerate(iteritems(self.table)): text, tag_map = x entry = e = default_entry.copy() entry['name'] = text entry['num'] = num for tag in tag_fieldname_map: fieldname, i = tag_fieldname_map[tag] if tag in tag_map: fieldvalue = tag_map[tag][i] if tag == 6: # Appears to be an idx into the KF8 elems table with an # offset fieldvalue = tuple(tag_map[tag]) entry[fieldname] = fieldvalue for which, name in iteritems({3:'text', 5:'kind', 70:'description', 71:'author', 72:'image_caption', 73:'image_attribution'}): if tag == which: entry[name] = self.cncx.get(fieldvalue, default_entry[name]) def refindx(e, name): ans = e[name] if ans < 0: ans = None return ans entry = NCXEntry(start=e['pos'], index=e['num'], length=e['len'], depth=e['hlvl'], parent=refindx(e, 'parent'), first_child=refindx(e, 'child1'), last_child=refindx(e, 'childn'), title=e['text'], pos_fid=e['pos_fid'], kind=e['kind']) self.records.append(entry)