factory = $factory; $this->functions = array(); $this->valueSupplier = $valueSupplier; foreach ($functions as $function => $options) { if (is_integer($function) && is_string($options)) { $this->functions[$options] = array('filter' => $options); } else { $this->functions[$function] = $options + array('filter' => $function); } } } public function getTokenParsers() { return array( new AsseticTokenParser($this->factory, 'javascripts', 'js/*.js'), new AsseticTokenParser($this->factory, 'stylesheets', 'css/*.css'), new AsseticTokenParser($this->factory, 'image', 'images/*', true), ); } public function getFunctions() { $functions = array(); foreach ($this->functions as $function => $filter) { $functions[] = new AsseticFilterFunction($function); } return $functions; } public function getGlobals() { return array( 'assetic' => array( 'debug' => $this->factory->isDebug(), 'vars' => null !== $this->valueSupplier ? new ValueContainer($this->valueSupplier) : array(), ), ); } public function getFilterInvoker($function) { return new AsseticFilterInvoker($this->factory, $this->functions[$function]); } public function getName() { return 'assetic'; } }