From: Jonathan Ingram Date: Mon, 5 Dec 2011 00:47:40 +0000 (+1100) Subject: Help the developer when they specify an invalid function by providing some alternatives X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=2c79f494f5772bfaeea5663a04ae52a48d1e6182;p=web%2Fkonrad%2Ftwig.git Help the developer when they specify an invalid function by providing some alternatives --- diff --git a/lib/Twig/Node/Expression/Function.php b/lib/Twig/Node/Expression/Function.php index 3f45719..b1fa858 100644 --- a/lib/Twig/Node/Expression/Function.php +++ b/lib/Twig/Node/Expression/Function.php @@ -17,9 +17,26 @@ class Twig_Node_Expression_Function extends Twig_Node_Expression public function compile(Twig_Compiler $compiler) { - $function = $compiler->getEnvironment()->getFunction($this->getAttribute('name')); + $name = $this->getAttribute('name'); + + $function = $compiler->getEnvironment()->getFunction($name); + if (false === $function) { - throw new Twig_Error_Syntax(sprintf('The function "%s" does not exist', $this->getAttribute('name')), $this->getLine()); + $alternativeFunctions = array(); + + foreach ($compiler->getEnvironment()->getFunctions() as $functionName => $function) { + if (false !== strpos($functionName, $name)) { + $alternativeFunctions[] = $functionName; + } + } + + $exceptionMessage = sprintf('The function "%s" does not exist', $name); + + if (count($alternativeFunctions)) { + $exceptionMessage = sprintf('%s. Did you mean "%s"?', $exceptionMessage, implode('", "', $alternativeFunctions)); + } + + throw new Twig_Error_Syntax($exceptionMessage, $this->getLine()); } $compiler