/** * HamlParser constructor. * @param array options * @return HamlParser */ public function __construct($options = array()) { if (isset($options['language'])) { Phamlp::$language = $options['language']; unset($options['language']); } foreach ($options as $name => $value) { $this->{$name} = $value; } // foreach if ($this->ugly) { $this->style = 'compressed'; } $this->format = strtolower($this->format); if (is_null($this->doctype) && !array_key_exists($this->format, $this->doctypes)) { throw new HamlException('Invalid {what} ({value}). Must be one of "{options}"', array('{what}' => 'format', '{value}' => $this->format, '{options}' => join(', ', array_keys($this->doctypes))), $this); } $this->showSource = $this->debug & HamlParser::DEBUG_SHOW_SOURCE; $this->showOutput = $this->debug & HamlParser::DEBUG_SHOW_OUTPUT; require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'HamlHelpers.php'; if (isset($this->helperFile)) { require_once $this->helperFile; $this->helperClass = basename($this->helperFile, ".php"); if (!is_subclass_of($this->helperClass, 'HamlHelpers')) { throw new HamlException('{what} must extend {base} class', array('{what}' => $this->helperClass, '{base}' => 'HamlHelpers'), $this); } } }
/** * Constructor. * Sets parser options * @param array $options * @return SassParser */ public function __construct($options = array()) { if (!is_array($options)) { throw new SassException('{what} must be a {type}', array('{what}' => 'options', '{type}' => 'array')); } if (!empty($options['language'])) { Phamlp::$language = $options['language']; } if (!empty($options['extensions'])) { foreach ($options['extensions'] as $extension => $extOptions) { include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'extensions' . DIRECTORY_SEPARATOR . $extension . DIRECTORY_SEPARATOR . 'config.php'; $configClass = 'SassExtentions' . $extension . 'Config'; $config = new $configClass(); $config->config($extOptions); $lp = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'extensions' . DIRECTORY_SEPARATOR . $extension . DIRECTORY_SEPARATOR . 'frameworks'; $fp = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'extensions' . DIRECTORY_SEPARATOR . $extension . DIRECTORY_SEPARATOR . 'functions'; $options['load_paths'] = empty($options['load_paths']) ? array($lp) : array_merge($options['load_paths'], $lp); $options['function_paths'] = empty($options['function_paths']) ? array($fp) : array_merge($options['function_paths'], $fp); } } if (!empty($options['vendor_properties'])) { if ($options['vendor_properties'] === true) { $this->vendor_properties = $this->_vendorProperties; } elseif (is_array($options['vendor_properties'])) { $this->vendor_properties = array_merge($this->_vendorProperties, $options['vendor_properties']); } } unset($options['language'], $options['vendor_properties']); $defaultOptions = array('cache' => self::CACHE, 'cache_location' => dirname(__FILE__) . DIRECTORY_SEPARATOR . self::CACHE_LOCATION, 'css_location' => dirname(__FILE__) . DIRECTORY_SEPARATOR . self::CSS_LOCATION, 'debug_info' => false, 'filename' => array('dirname' => '', 'basename' => ''), 'function_paths' => array(), 'load_paths' => array(dirname(__FILE__) . DIRECTORY_SEPARATOR . self::TEMPLATE_LOCATION), 'line' => 1, 'line_numbers' => false, 'style' => SassRenderer::STYLE_NESTED, 'syntax' => SassFile::SASS); foreach (array_merge($defaultOptions, $options) as $name => $value) { if (property_exists($this, $name)) { $this->{$name} = $value; } } }