示例#1
0
文件: files.py 项目: hjq300/zim-wiki
	def export_iter(self, pages):
		self.export_resources()

		for prev, page, next in MovingWindowIter(pages):
			logger.info('Exporting page: %s', page.name)
			yield page
			try:
				self.export_page(pages.notebook, page, pages, prevpage=prev, nextpage=next)
					# XXX FIXME remove need for notebook here
				self.export_attachments(pages.notebook, page)
					# XXX FIXME remove need for notebook here
			except:
				raise
				logger.exception('Error while exporting: %s', page.name)

		if self.index_page:
			try:
				index_page = self.index_page
				if isinstance(index_page, basestring):
					index_page = pages.notebook.cleanup_pathname(index_page) # XXX

				logger.info('Export index: %s', index_page, pages)
				yield Path(index_page)
				self.export_index(index_page, pages)
			except:
				logger.exception('Error while exporting index')
    def _loop(self, output, element, context):
        var = element.attrib['var']
        expr = element.attrib['expr']
        items = expr(context)
        if not isinstance(items, abc.Iterable):
            raise TypeError('Can not iterate over: %s' % items)
        elif not isinstance(items, abc.Sized):
            # cast to list to ensure we have a len()
            items = list(items)

        # set "loop"
        outer = context.get('loop')
        if isinstance(outer, TemplateLoopState):
            loop = TemplateLoopState(len(items), outer)
        else:
            loop = TemplateLoopState(len(items), None)
        context['loop'] = loop

        # do the iterations
        myiter = MovingWindowIter(items)
        for i, items in enumerate(myiter):
            loop._update(i, myiter)
            self._set(context, var, items[1])  # set var
            self.__call__(output, element, context)  # recurs

        # restore "loop"
        context['loop'] = outer
示例#3
0
    def export_iter(self, pages):
        self.export_resources()

        for prev, page, next in MovingWindowIter(pages):
            yield page
            try:
                self.export_page(pages.notebook,
                                 page,
                                 pages,
                                 prevpage=prev,
                                 nextpage=next)
                # XXX FIXME remove need for notebook here
                for file in self.export_attachments_iter(pages.notebook, page):
                    yield file
                    # XXX FIXME remove need for notebook here
            except:
                raise
                logger.exception('Error while exporting: %s', page.name)

        if self.index_page:
            try:
                logger.info('Export index: %s', self.index_page)
                yield self.index_page
                self.export_index(self.index_page, pages)
            except:
                logger.exception('Error while exporting index')