Latte\PhpWriter::modifierPass PHP Method

modifierPass() public method

Formats modifiers calling.
public modifierPass ( MacroTokens $tokens, $var, $isContent = FALSE ) : MacroTokens
$tokens MacroTokens
return MacroTokens
    public function modifierPass(MacroTokens $tokens, $var, $isContent = FALSE)
    {
        $inside = FALSE;
        $res = new MacroTokens($var);
        while ($tokens->nextToken()) {
            if ($tokens->isCurrent($tokens::T_WHITESPACE)) {
                $res->append(' ');
            } elseif ($inside) {
                if ($tokens->isCurrent(':', ',')) {
                    $res->append(', ');
                    $tokens->nextAll($tokens::T_WHITESPACE);
                } elseif ($tokens->isCurrent('|')) {
                    $res->append(')');
                    $inside = FALSE;
                } else {
                    $res->append($tokens->currentToken());
                }
            } else {
                if ($tokens->isCurrent($tokens::T_SYMBOL)) {
                    if ($tokens->isCurrent('escape')) {
                        if ($isContent) {
                            $res->prepend('LR\\Filters::convertTo($_fi, ' . var_export(implode($this->context), TRUE) . ', ')->append(')');
                        } else {
                            $res = $this->escapePass($res);
                        }
                        $tokens->nextToken('|');
                    } elseif (!strcasecmp($tokens->currentValue(), 'checkurl')) {
                        $res->prepend('LR\\Filters::safeUrl(');
                        $inside = TRUE;
                    } else {
                        $name = strtolower($tokens->currentValue());
                        $res->prepend($isContent ? '$this->filters->filterContent(' . var_export($name, TRUE) . ', $_fi, ' : 'call_user_func($this->filters->' . $name . ', ');
                        $inside = TRUE;
                    }
                } else {
                    throw new CompileException("Modifier name must be alphanumeric string, '{$tokens->currentValue()}' given.");
                }
            }
        }
        if ($inside) {
            $res->append(')');
        }
        return $res;
    }