def handle_entry(self, code, data): if code == 0: parser = HHCParser(self.book) parser.parse(self.book.archive[data]) elif code == 1: parser = HHKParser(self.book) parser.parse(self.book.archive[data]) elif code == 2: self.book.contents.link = data elif code == 3: self.book.contents.name = data
def read_chm(self, path): archive = ChmArchive(path) name = os.path.splitext(os.path.basename(path))[0] book = Book(name, archive) SystemParser(book) for name in archive: if name.lower().endswith('.hhc') and not len(book.contents): parser = HHCParser(book) parser.parse(archive[name]) elif name.lower().endswith('.hhk') and not len(book.index): parser = HHKParser(book) parser.parse(archive[name]) book.archive = ChmFilterArchive(archive) return book