/** * Returns the parse tree for a file. * If caching is enabled a cached version will be used if possible; if not the * parsed file will be cached. * @param string filename to parse * @param array parse options * @return SassRootNode */ public static function getTree($filename, $options) { if ($options['cache']) { $cached = self::getCachedFile($filename, $options); if ($cached !== false) { return $cached; } } $parser = new SassParser($options); $tree = $parser->parse($filename); if ($options['cache']) { self::setCachedFile($tree, $filename, $options); } return $tree; }
/** * Returns the parse tree for a file. * If caching is enabled a cached version will be used if possible; if not the * parsed file will be cached. * @param string filename to parse * @param SassParser Sass parser * @return SassRootNode */ public static function getTree($filename, $parser) { if ($parser->cache) { $cached = self::getCachedFile($filename, $parser->cache_location); if ($cached !== false) { return $cached; } } $sassParser = new SassParser(array_merge($parser->options, array('line' => 1))); $tree = $sassParser->parse($filename); if ($parser->cache) { self::setCachedFile($tree, $filename, $parser->cache_location); } return $tree; }
/** * Returns the parse tree for a file. * @param string filename to parse * @param SassParser Sass parser * @return SassRootNode */ public static function get_tree($filename, &$parser) { $contents = self::get_file_contents($filename, $parser); $options = array_merge($parser->options, array('line' => 1)); # attempt at cross-syntax imports. $ext = substr($filename, strrpos($filename, '.') + 1); if ($ext == self::SASS || $ext == self::SCSS) { $options['syntax'] = $ext; } $dirname = dirname($filename); $options['load_paths'][] = $dirname; if (!in_array($dirname, $parser->load_paths)) { $parser->load_paths[] = dirname($filename); } $sassParser = new SassParser($options); $tree = $sassParser->parse($contents, FALSE); return $tree; }
protected function compileInternal($parameters) { global $wgAutoloadClasses, $IP; $wgAutoloadClasses['SassParser'] = $IP . '/lib/phpsass/SassParser.php'; // make sure SassParser-related classes are loaded require_once $wgAutoloadClasses['SassParser']; // process source sass file $options = array('style' => SassRenderer::STYLE_COMPACT, 'syntax' => SassFile::SCSS, 'filename' => $this->fileName, 'load_paths' => array($IP), 'functions' => array('get_command_line_param' => function ($name, $default) use($parameters) { return array_key_exists($name, $parameters) && $parameters[$name] !== '' ? $parameters[$name] : $default; })); $context = new SassContext(); $parser = new SassParser($options); $startTime = microtime(true); $tree = $parser->parse($this->fileName, true); $midTime = microtime(true); $contents = $tree->render($context); $endTime = microtime(true); $contents = sprintf("/* phpsass: parse/render: %.5f / %.5f */\n\n", $midTime - $startTime, $endTime - $midTime) . $contents; return $contents; }