diff options
author | rvelices <rv-github@modusoptimus.com> | 2013-06-20 03:38:47 +0000 |
---|---|---|
committer | rvelices <rv-github@modusoptimus.com> | 2013-06-20 03:38:47 +0000 |
commit | 6fc07742f8fca9d32db23243d374ea27e8ee4c1e (patch) | |
tree | bc7240c53a1c6bdff6c785153deb6306585c4062 /include/smarty/libs/plugins/shared.literal_compiler_param.php | |
parent | 9843eb362dd7d1b9d762871777ef76fa84e8202a (diff) |
smarty 3 - first pass for tests
git-svn-id: http://piwigo.org/svn/trunk@23384 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include/smarty/libs/plugins/shared.literal_compiler_param.php')
-rw-r--r-- | include/smarty/libs/plugins/shared.literal_compiler_param.php | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/include/smarty/libs/plugins/shared.literal_compiler_param.php b/include/smarty/libs/plugins/shared.literal_compiler_param.php new file mode 100644 index 000000000..dbcd9374c --- /dev/null +++ b/include/smarty/libs/plugins/shared.literal_compiler_param.php @@ -0,0 +1,33 @@ +<?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; +} |