本文整理汇总了PHP中Latte\PhpWriter::preprocess方法的典型用法代码示例。如果您正苦于以下问题:PHP PhpWriter::preprocess方法的具体用法?PHP PhpWriter::preprocess怎么用?PHP PhpWriter::preprocess使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Latte\PhpWriter
的用法示例。
在下文中一共展示了PhpWriter::preprocess方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: macroVar
/**
* {var ...}
* {default ...}
*/
public function macroVar(MacroNode $node, PhpWriter $writer)
{
if ($node->modifiers) {
trigger_error("Modifiers are not allowed in {{$node->name}}", E_USER_WARNING);
}
if ($node->args === '' && $node->parentNode && $node->parentNode->name === 'switch') {
return '} else {';
}
$var = TRUE;
$tokens = $writer->preprocess();
$res = new Latte\MacroTokens();
while ($tokens->nextToken()) {
if ($var && $tokens->isCurrent(Latte\MacroTokens::T_SYMBOL, Latte\MacroTokens::T_VARIABLE)) {
if ($node->name === 'default') {
$res->append("'" . ltrim($tokens->currentValue(), '$') . "'");
} else {
$res->append('$' . ltrim($tokens->currentValue(), '$'));
}
$var = NULL;
} elseif ($tokens->isCurrent('=', '=>') && $tokens->depth === 0) {
$res->append($node->name === 'default' ? '=>' : '=');
$var = FALSE;
} elseif ($tokens->isCurrent(',') && $tokens->depth === 0) {
if ($var === NULL) {
$res->append($node->name === 'default' ? '=>NULL' : '=NULL');
}
$res->append($node->name === 'default' ? ',' : ';');
$var = TRUE;
} elseif ($var === NULL && $node->name === 'default' && !$tokens->isCurrent(Latte\MacroTokens::T_WHITESPACE)) {
throw new CompileException("Unexpected '{$tokens->currentValue()}' in {default {$node->args}}");
} else {
$res->append($tokens->currentToken());
}
}
if ($var === NULL) {
$res->append($node->name === 'default' ? '=>NULL' : '=NULL');
}
$out = $writer->quoteFilter($res)->joinAll();
return $node->name === 'default' ? "extract(array({$out}), EXTR_SKIP)" : $out;
}