def patternContext(self, ctx, name): context = WovenContext(parent=ctx) self.rememberStuff(context) # XXX: preprocessors? doc = self.docFactory.load(context) context.tag = inevow.IQ(doc).onePattern(name) return context
def rend(self, ctx, data): # Unfortunately, we still need a context to make the rest of the # rendering process work. A goal should be to elimate this completely. context = WovenContext() if self.docFactory is None: raise MissingDocumentFactory(self) preprocessors = _getPreprocessors(self) doc = self.docFactory.load(context, preprocessors) context.remember(self, IData) context.remember(self, IRenderer) context.remember(self, IRendererFactory) context.tag = invisible[doc] return context
def rend(self, context, data): # Create a new context so the current context is not polluted with # remembrances. context = WovenContext(parent=context) # Remember me as lots of things self.rememberStuff(context) preprocessors = _getPreprocessors(self) # This tidbit is to enable us to include Page objects inside # stan expressions and render_* methods and the like. But # because of the way objects can get intertwined, we shouldn't # leave the pattern changed. old = self.docFactory.pattern self.docFactory.pattern = 'content' self.docFactory.precompiledDoc = None try: try: doc = self.docFactory.load(context, preprocessors) finally: self.docFactory.pattern = old self.docFactory.precompiledDoc = None except TypeError as e: # Avert your eyes now! I don't want to catch anything but IQ # adaption exceptions here but all I get is TypeError. This whole # section of code is a complete hack anyway so one more won't # matter until it's all removed. ;-). if 'nevow.inevow.IQ' not in str(e): raise doc = self.docFactory.load(context, preprocessors) except NodeNotFound: doc = self.docFactory.load(context, preprocessors) else: if old == 'content': warnings.warn( """[v0.5] Using a Page with a 'content' pattern is deprecated.""", DeprecationWarning, stacklevel=2) context.tag = tags.invisible[doc] return context