diff options
Diffstat (limited to 'lib/smarty3/plugins/shared.literal_compiler_param.php')
-rw-r--r-- | lib/smarty3/plugins/shared.literal_compiler_param.php | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/smarty3/plugins/shared.literal_compiler_param.php b/lib/smarty3/plugins/shared.literal_compiler_param.php new file mode 100644 index 0000000..8a3711d --- /dev/null +++ b/lib/smarty3/plugins/shared.literal_compiler_param.php @@ -0,0 +1,36 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsShared + */ + +/** + * evaluate compiler parameter + * + * @param array $params parameter array as given to the compiler function + * @param integer $index array index of the parameter to convert + * @param mixed $default value to be returned if the parameter is not present + * + * @return mixed evaluated value of parameter or $default + * @throws SmartyException if parameter is not a literal (but an expression, variable, …) + * @author Rodney Rehm + */ +function smarty_literal_compiler_param($params, $index, $default = null) +{ + // not set, go default + if (!isset($params[ $index ])) { + return $default; + } + // test if param is a literal + if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[ $index ])) { + throw new SmartyException('$param[' . $index . + '] is not a literal and is thus not evaluatable at compile time'); + } + + $t = null; + eval("\$t = " . $params[ $index ] . ";"); + + return $t; +} |