Пример #1
0
	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
Пример #2
0
	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
Пример #3
0
    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
Пример #4
0
	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
Пример #5
0
    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