@@ -596,25 +596,23 @@ class DelayedArgument(LazyEvaluation):
596596 _CMD_SPLIT_TOKEN = ':'
597597
598598 def __init__ (self , expression : str , reverse : bool = False , seed = None ):
599+ requires_seed = seed is None
599600 self .expression = expression
600601 self .modifiers = []
601602 self .finalized = False
602- if seed is not None :
603- if reverse :
604- if not expression .startswith (':' ):
605- expression = F':{ expression } '
606- else :
607- if not expression .endswith (':' ):
608- expression = F'{ expression } :'
609603 while not self .finalized :
610- name , arguments , newexpr = self ._split_modifier (expression , reverse )
604+ name , arguments , newexpr = self ._split_modifier (
605+ expression ,
606+ reverse ,
607+ requires_seed ,
608+ )
611609 if not name or not self .handler .can_handle (name , * arguments ):
612610 break
613611 self .modifiers .append ((name , arguments ))
614612 expression = newexpr
615613 if self .handler .terminates (name ):
616614 self .finalized = True
617- if seed is not None :
615+ if not requires_seed and not self . finalized :
618616 if expression :
619617 rt = 'reverse ' if reverse else ''
620618 raise ValueError (F'{ rt } expression { self .expression } with seed { seed } was not fully parsed.' )
@@ -654,15 +652,24 @@ def _split_expression(self, expression: str, reverse: bool = False) -> tuple[str
654652 return (head , tail ) if reverse else (tail , head )
655653 return expression , None
656654
657- def _split_modifier (self , expression : str , reverse : bool = False ) -> tuple [str | None , tuple [str ], str ]:
655+ def _split_modifier (
656+ self ,
657+ sequence : str ,
658+ reverse : bool = False ,
659+ requires_seed : bool = True ,
660+ ) -> tuple [str | None , tuple [str , ...], str ]:
658661 brackets = 0
659662 name = None
660663 argoffset = 0
661664 arguments = ()
662665
663- rest , expression = self ._split_expression (expression , reverse )
666+ rest , expression = self ._split_expression (sequence , reverse )
667+
664668 if expression is None :
665- return name , arguments , rest
669+ if requires_seed :
670+ return name , arguments , rest
671+ expression , rest = rest , ''
672+
666673 name = expression
667674
668675 for k , character in enumerate (expression ):
0 commit comments