def parse(cls, parser, token): """ Parse the node syntax: .. code-block:: html+django {% page_placeholder parentobj slotname title="test" role="m" %} """ bits, as_var = parse_as_var(parser, token) tag_name, args, kwargs = parse_token_kwargs(parser, bits, allowed_kwargs=cls.allowed_kwargs, compile_args=True, compile_kwargs=True) # Play with the arguments if len(args) == 2: parent_expr = args[0] slot_expr = args[1] elif len(args) == 1: # Allow 'page' by default. Works with most CMS'es, including django-fluent-pages. parent_expr = Variable('page') slot_expr = args[0] else: raise TemplateSyntaxError("""{0} tag allows two arguments: 'parent object' 'slot name' and optionally: title=".." role="..".""".format(tag_name)) cls.validate_args(tag_name, *args, **kwargs) return cls( tag_name=tag_name, as_var=as_var, parent_expr=parent_expr, slot_expr=slot_expr, **kwargs )
def parse(cls, parser, token): """ Parse the node syntax: .. code-block:: html+django {% page_placeholder parentobj slotname title="test" role="m" %} """ tag_name, args, kwargs = parse_token_kwargs(parser, token, allowed_kwargs=cls.allowed_kwargs, compile_args=True, compile_kwargs=True) if len(args) == 2: parent_expr = args[0] slot_expr = args[1] elif len(args) == 1: # Allow 'page' by default. Works with most CMS'es, including django-fluent-pages. parent_expr = Variable('page') slot_expr = args[0] else: raise TemplateSyntaxError("""{0} tag allows two arguments: 'parent object' 'slot name' and optionally: title=".." role="..".""".format(tag_name)) cls.validate_args(tag_name, *args, **kwargs) template_expr = kwargs.pop('template', None) fallback_expr = kwargs.pop('fallback', None) return cls( tag_name=tag_name, parent_expr=parent_expr, slot_expr=slot_expr, template_expr=template_expr, fallback_expr=fallback_expr, meta_kwargs=kwargs # The remaining non-functional args for CMS admin page. )
def parse(cls, parser, token): """ Parse the node: {% getfirstof val1 val2 as val3 %} parser: a Parser class. token: a Token class. """ bits, var_name = parse_as_var(parser, token) tag_name, choices, _ = parse_token_kwargs(parser, bits, allowed_kwargs=()) if var_name is None: raise TemplateSyntaxError("Expected syntax: {{% {0} val1 val2 as val %}}".format(tag_name)) return cls(choices, var_name)
def parse(cls, parser, token): """ Parse the node syntax: .. code-block:: html+django {% page_placeholder parentobj slotname title="test" role="m" %} """ tag_name, args, kwargs = parse_token_kwargs( parser, token, allowed_kwargs=cls.allowed_kwargs, compile_args=True, compile_kwargs=True) if len(args) == 2: parent_expr = args[0] slot_expr = args[1] elif len(args) == 1: # Allow 'page' by default. Works with most CMS'es, including django-fluent-pages. parent_expr = Variable('page') slot_expr = args[0] else: raise TemplateSyntaxError( """{0} tag allows two arguments: 'parent object' 'slot name' and optionally: title=".." role="..".""" .format(tag_name)) cls.validate_args(tag_name, *args, **kwargs) template_expr = kwargs.pop('template', None) fallback_expr = kwargs.pop('fallback', None) return cls( tag_name=tag_name, parent_expr=parent_expr, slot_expr=slot_expr, template_expr=template_expr, fallback_expr=fallback_expr, meta_kwargs= kwargs # The remaining non-functional args for CMS admin page. )
def parse(cls, parser, token): """ Custom parsing for the ``{% ajax_comment_tags for ... %}`` tag. """ # Process the template line. tag_name, args, kwargs = parse_token_kwargs( parser, token, allowed_kwargs=cls.allowed_kwargs, compile_args=False, # Only overrule here, keep at render() phase. compile_kwargs=cls.compile_kwargs) # remove "for" keyword, so all other args can be resolved in render(). if args[0] == 'for': args.pop(0) # And apply the compilation afterwards for i in range(len(args)): args[i] = parser.compile_filter(args[i]) cls.validate_args(tag_name, *args, **kwargs) return cls(tag_name, *args, **kwargs)
def parse(cls, parser, token): """ Custom parsing for the ``{% ajax_comment_tags for ... %}`` tag. """ # Process the template line. tag_name, args, kwargs = parse_token_kwargs( parser, token, allowed_kwargs=cls.allowed_kwargs, compile_args=False, # Only overrule here, keep at render() phase. compile_kwargs=cls.compile_kwargs ) # remove "for" keyword, so all other args can be resolved in render(). if args[0] == 'for': args.pop(0) # And apply the compilation afterwards for i in range(len(args)): args[i] = parser.compile_filter(args[i]) cls.validate_args(tag_name, *args, **kwargs) return cls(tag_name, *args, **kwargs)