def spaceless(writer, node): original = writer.spaceless writer.spaceless = True writer.warn('entering spaceless mode with different semantics', node) # do the initial stripping nodelist = list(node.nodelist) if nodelist: if isinstance(nodelist[0], TextNode): nodelist[0] = TextNode(nodelist[0].s.lstrip()) if isinstance(nodelist[-1], TextNode): nodelist[-1] = TextNode(nodelist[-1].s.rstrip()) writer.body(nodelist) writer.spaceless = original
def pybb_csrf(parser, token): """ This tag returns CsrfTokenNode if CsrfViewMiddleware is enabled, or empty string if not """ if 'django.middleware.csrf.CsrfViewMiddleware' in settings.MIDDLEWARE_CLASSES: from django.template.defaulttags import CsrfTokenNode return CsrfTokenNode() else: return TextNode('')
def nevercache(parser, token): """ Tag for two phased rendering. Converts enclosed template code and content into text, which gets rendered separately in ``mezzanine.core.middleware.UpdateCacheMiddleware``. This is to bypass caching for the enclosed code and content. """ text = [] end_tag = "endnevercache" tag_mapping = { TOKEN_TEXT: ("", ""), TOKEN_VAR: ("{{", "}}"), TOKEN_BLOCK: ("{%", "%}"), TOKEN_COMMENT: ("{#", "#}"), } delimiter = nevercache_token() while parser.tokens: token = parser.next_token() if token.token_type == TOKEN_BLOCK and token.contents == end_tag: return TextNode(delimiter + "".join(text) + delimiter) start, end = tag_mapping[token.token_type] text.append("%s%s%s" % (start, token.contents, end)) parser.unclosed_block_tag(end_tag)
def do_tag2(parser, token): return TextNode('<app 2 lib 2 tag 2>')
def do_tag1(parser, token): return TextNode('<app 1 lib 2 tag 1>')
def do_tag3(parser, token): return TextNode('<app 3 sub_app1 lib 3 tag 3>')
def do_tag1(parser, token): return TextNode('<app 2 lib 1 tag 1>')
def do_tag2(parser, token): return TextNode('<app 1 lib 1 tag 2>')