def output(self, string): """String output; supports 'structure' keyword. >>> class MockExpressionTranslator(ExpressionTranslator): ... def validate(self, string): ... return True ... ... def translate(self, string): ... return types.value(string) >>> output = MockExpressionTranslator().output >>> output("context/title") escape(value('context/title'),) >>> output("structure context/title") value('context/title') """ if string.startswith('structure '): return self.expression(string[len('structure')+1:]) expression = self.expression(string) if isinstance(expression, types.parts): return types.escape(expression) return types.escape((expression,))
def output(self, string): """String output; supports 'structure' keyword. >>> class MockExpressionTranslator(ExpressionTranslator): ... def translate(self, string, escape=None): ... if string: return types.value(string) >>> output = MockExpressionTranslator().output >>> output("context/title") escape(value('context/title'),) >>> output("context/pretty_title_or_id|context/title") escape(value('context/pretty_title_or_id'), value('context/title')) >>> output("structure context/title") value('context/title') >>> output(" structure context/title") value('context/title') """ string = string.lstrip(' ') if string.startswith('structure '): return self.tales(string[len('structure'):]) expression = self.tales(string) if isinstance(expression, types.parts): return types.escape(expression) return types.escape((expression,))
def tail(self): tail = self.element.tail if tail is not None: if self.element.strip_text: parent = self.element.getparent() if parent is not None and parent.strip_text and parent[ -1] is self.element: tail = tail.rstrip('\n ') parent = self.element.getparent() if parent is not None and not parent.node._interpolation_enabled: return (tail, ) parts = self.element.translator.split(tail) if self.element.tag == '{http://www.w3.org/1999/xhtml}cdata': return parts if not self._interpolation_escape: return parts return tuple( isinstance(part, types.expression) and types.escape(part) or \ self.element.meta_structure is True and part or \ utils.htmlescape(part) for part in parts) return ()
def tail(self): tail = self.element.tail if tail is not None: if self.element.strip_text: parent = self.element.getparent() if parent is not None and parent.strip_text and parent[-1] is self.element: tail = tail.rstrip('\n ') parent = self.element.getparent() if parent is not None and not parent.node._interpolation_enabled: return (tail,) parts = self.element.translator.split(tail) if self.element.tag == '{http://www.w3.org/1999/xhtml}cdata': return parts if not self._interpolation_escape: return parts return tuple( isinstance(part, types.expression) and types.escape(part) or \ self.element.meta_structure is True and part or \ utils.htmlescape(part) for part in parts) return ()
def content(self): content = self._content if content is not None: if isinstance(content, types.escape): return types.escape((types.value(self.content_symbol), )) return types.parts((types.value(self.content_symbol), ))
def content(self): content = self._content if content is not None: if isinstance(content, types.escape): return types.escape((types.value(self.content_symbol),)) return types.parts((types.value(self.content_symbol),))