def read_hhp(self, path): """Uncompressed HTML Help """ basedir, name = os.path.split(os.path.abspath(path)) name = os.path.splitext(name)[0] archive = DirArchive(basedir) book = Book(name, archive) parser = HHPParser(book) parser.parse(open(path)) book.archive = MshhFilterArchive(archive) return book
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
def read_tgz(self, path): """A DevHelp book in a gzip'ed tarball.""" name = os.path.splitext(os.path.basename(path))[0] archive = TarArchive(path) parser = SpecParser() parser.parse(archive['book.devhelp']) book = Book(name, TgzDevhelpFilterArchive(archive), parser.contents, parser.index, parser.metadata) return book
def read_htb(self, path): """wxWindows HTML Help """ name = os.path.splitext(os.path.basename(path))[0] archive = ZipArchive(path) book = Book(name, archive) names = [name for name in archive.keys() if name[-4:].lower() == '.hhp'] if not len(names): raise ValueError, 'no HHP file found.' if len(names) > 1: # FIXME: Actually the HTB format allows more than one project inside a zip raise ValueError, 'HTB with multiple books are not supported' hhp = names[0] parser = HHPParser(book) parser.parse(archive[hhp]) book.archive = MshhFilterArchive(archive) return book
def read_spec(self, path): """Read a DevHelp book on a plain directory.""" basedir, spec = os.path.split(os.path.abspath(path)) name = os.path.splitext(spec)[0] archive = DirArchive(basedir) parser = SpecParser() parser.parse(file(path, 'rt')) book = Book(name, DirDevhelpFilterArchive(archive), parser.contents, parser.index, parser.metadata) return book