* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage; /** * Compiles a node to PHP code. * * @author Fabien Potencier */ class Compiler { private $source; private $functions; public function __construct(array $functions) { $this->functions = $functions; } public function getFunction($name) { return $this->functions[$name]; } /** * Gets the current PHP code after compilation. * * @return string The PHP code */ public function getSource() { return $this->source; } public function reset() { $this->source = ''; return $this; } /** * Compiles a node. * * @return $this */ public function compile(Node\Node $node) { $node->compile($this); return $this; } public function subcompile(Node\Node $node) { $current = $this->source; $this->source = ''; $node->compile($this); $source = $this->source; $this->source = $current; return $source; } /** * Adds a raw string to the compiled code. * * @param string $string The string * * @return $this */ public function raw($string) { $this->source .= $string; return $this; } /** * Adds a quoted string to the compiled code. * * @param string $value The string * * @return $this */ public function string($value) { $this->source .= sprintf('"%s"', addcslashes($value, "\0\t\"\$\\")); return $this; } /** * Returns a PHP representation of a given value. * * @param mixed $value The value to convert * * @return $this */ public function repr($value) { if (is_int($value) || is_float($value)) { if (false !== $locale = setlocale(LC_NUMERIC, 0)) { setlocale(LC_NUMERIC, 'C'); } $this->raw($value); if (false !== $locale) { setlocale(LC_NUMERIC, $locale); } } elseif (null === $value) { $this->raw('null'); } elseif (is_bool($value)) { $this->raw($value ? 'true' : 'false'); } elseif (is_array($value)) { $this->raw('array('); $first = true; foreach ($value as $key => $value) { if (!$first) { $this->raw(', '); } $first = false; $this->repr($key); $this->raw(' => '); $this->repr($value); } $this->raw(')'); } else { $this->string($value); } return $this; } } __halt_compiler();----SIGNATURE:----B8zaSiQLhQO5xLsKLb6NtvuQwHOzRMsv65J8Jr39qLNWjpubXx0JOvZT92TA/krZPgxBR7y3cLFQUkrXw2RvA1OMnKn0Z8RxvT1dt+nZNFsyW50CQmQTA2Gb04vsJtbWSWOxGL0tBGshrDPyP+OzbOTn+PuD20HfUc6qL6XJm9hN+zTlmKPAWr33xt4CqmuVzhM1pnihVCFSVzoFHnVZ8ncJXDuw7Rn/FNjteNEiXLRl1D+mH+zSD6OOlg6pCe6bW44j7UKKCndzOjngp1IaLoMVOmRAUjWBFyHCgVtEJSZoIMyB7gaEzPBpcp4WpUtkZE2W/dWvTQE77dcJQEr4xWzSw6KDymWUI3V2t1BF73xlZYf+KkMyXK97KBk+GgtPwHwp29u5J60tSPU5TZU/DnQNV6dgHD4WYJm+dMWcGwstxVKbhS9W3Yf0hQPqKlWHxRkXZquQ2RgQ30LYqtb0yIK1hcWAkizVacJdiB1KuFAWxKB1hhrU0IxWtjAgCJiFIx4VvPyo4Iy3NE94ZPQWW0eUBR6G+TYgGpY9FuCxuySHnLnoOLnj/wwJcTdIFcPSAGuonZhRc0aB7l6UtZv1dWrolpSiMGZHzFsimkTr4+wib3soJ2QAstUtNJ0QITLU5UwOYIjIEyETIgiuvRrMT1ah4lbj1ygeB1CPM0V9EzM=----ATTACHMENT:----Mjc3OTI2MTM2MTE5NTUwNSAzNjQ2MzI1OTg2OTI5NDc2IDg4MjY4Mjg3Njk1NDExNDY=