Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / consolidation / robo / src / Task / Assets / Scss.php
diff --git a/vendor/consolidation/robo/src/Task/Assets/Scss.php b/vendor/consolidation/robo/src/Task/Assets/Scss.php
new file mode 100644 (file)
index 0000000..ffd3934
--- /dev/null
@@ -0,0 +1,93 @@
+<?php
+namespace Robo\Task\Assets;
+
+use Robo\Result;
+
+/**
+ * Compiles scss files.
+ *
+ * ```php
+ * <?php
+ * $this->taskScss([
+ *     'scss/default.scss' => 'css/default.css'
+ * ])
+ * ->importDir('assets/styles')
+ * ->run();
+ * ?>
+ * ```
+ *
+ * Use the following scss compiler in your project:
+ *
+ * ```
+ * "leafo/scssphp": "~0.1",
+ * ```
+ *
+ * You can implement additional compilers by extending this task and adding a
+ * method named after them and overloading the scssCompilers() method to
+ * inject the name there.
+ */
+class Scss extends CssPreprocessor
+{
+    const FORMAT_NAME = 'scss';
+
+    /**
+     * @var string[]
+     */
+    protected $compilers = [
+        'scssphp', // https://github.com/leafo/scssphp
+    ];
+
+    /**
+     * scssphp compiler
+     * @link https://github.com/leafo/scssphp
+     *
+     * @param string $file
+     *
+     * @return string
+     */
+    protected function scssphp($file)
+    {
+        if (!class_exists('\Leafo\ScssPhp\Compiler')) {
+            return Result::errorMissingPackage($this, 'scssphp', 'leafo/scssphp');
+        }
+
+        $scssCode = file_get_contents($file);
+        $scss = new \Leafo\ScssPhp\Compiler();
+
+        // set options for the scssphp compiler
+        if (isset($this->compilerOptions['importDirs'])) {
+            $scss->setImportPaths($this->compilerOptions['importDirs']);
+        }
+
+        if (isset($this->compilerOptions['formatter'])) {
+            $scss->setFormatter($this->compilerOptions['formatter']);
+        }
+
+        return $scss->compile($scssCode);
+    }
+
+    /**
+     * Sets the formatter for scssphp
+     *
+     * The method setFormatter($formatterName) sets the current formatter to $formatterName,
+     * the name of a class as a string that implements the formatting interface. See the source
+     * for Leafo\ScssPhp\Formatter\Expanded for an example.
+     *
+     * Five formatters are included with leafo/scssphp:
+     * - Leafo\ScssPhp\Formatter\Expanded
+     * - Leafo\ScssPhp\Formatter\Nested (default)
+     * - Leafo\ScssPhp\Formatter\Compressed
+     * - Leafo\ScssPhp\Formatter\Compact
+     * - Leafo\ScssPhp\Formatter\Crunched
+     *
+     * @link http://leafo.github.io/scssphp/docs/#output-formatting
+     *
+     * @param string $formatterName
+     *
+     * @return $this
+     */
+    public function setFormatter($formatterName)
+    {
+        return parent::setFormatter($formatterName);
+    }
+}