/** * Compiles the SASS content to CSS * * @param Node $node the node to be compiled * @param string $indent the indentation to use on each child * @param string $newLine the new-line to append after each line * * @return string the wrapped SASS-CSS-string * @throws Compiler\Exception when the Stylus package is not installed */ public static function filterSass(Node $node, $indent, $newLine) { if (!class_exists('Leafo\\ScssPhp\\Compiler')) { throw new Compiler\Exception("Failed to compile SASS: " . "Please install the leafo/scssphp composer package"); } $sass = new \Leafo\ScssPhp\Compiler(); $css = $sass->compile($node->text()); return '<style>' . $newLine . $indent . $css . $newLine . $indent . '</style>'; }
/** * A plain-text filter that just corrects indentation and new-lines. * * @param Node $node the node to be wrapped * @param string $indent the indentation to use on each child * @param string $newLine the new-line to append after each line * * @return string the wrapped PTHML-string */ public static function filterPlain(Node $node, $indent, $newLine) { $text = trim($node->text()); //Normalize newlines to $newLine and append our indent $i = 0; return implode($newLine, array_map(function ($value) use($indent, $newLine, &$i) { if (strlen($indent) < 1 && $i++ !== 0 && strlen($value) > 0) { //Make sure we separate with at least one white-space $indent = ' '; } return $indent . trim($value); }, explode("\n", $text))); }