Files
Grav-Admin-Plugin/classes/plugin/ScssCompiler.php

71 lines
1.7 KiB
PHP
Raw Normal View History

2020-04-18 17:45:11 -06:00
<?php
2023-01-02 11:17:40 -07:00
/**
* @package Grav\Plugin\Admin
*
2024-01-05 11:50:46 +00:00
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
2023-01-02 11:17:40 -07:00
* @license MIT License; see LICENSE file for details.
*/
2020-04-18 17:45:11 -06:00
namespace Grav\Plugin\Admin;
use ScssPhp\ScssPhp\Compiler;
2023-05-08 18:21:03 -06:00
use ScssPhp\ScssPhp\ValueConverter;
2020-04-18 17:45:11 -06:00
class ScssCompiler
{
protected $compiler;
public function compiler()
{
if ($this->compiler === null) {
$this->reset();
}
return $this->compiler;
}
public function reset()
{
$this->compiler = new Compiler();
return $this;
}
public function setVariables(array $variables)
2020-04-18 17:45:11 -06:00
{
2023-05-08 18:21:03 -06:00
// $parsed = ValueConverter::fromPhp($variables);
$parsed = [];
foreach ($variables as $key => $value) {
$parsed[$key] = ValueConverter::parseValue($value);
}
$this->compiler()->addVariables($parsed);
2020-04-18 17:45:11 -06:00
return $this;
}
public function setImportPaths(array $paths)
2020-04-18 17:45:11 -06:00
{
$this->compiler()->setImportPaths($paths);
return $this;
}
public function compile(string $input_file, string $output_file)
2020-04-18 17:45:11 -06:00
{
$input = file_get_contents($input_file);
$output = $this->compiler()->compile($input);
file_put_contents($output_file, $output);
return $this;
}
public function compileAll(array $input_paths, string $output_file)
{
$input = '';
foreach ($input_paths as $input_file) {
$input .= trim(file_get_contents($input_file)) . "\n\n";
}
2023-05-08 18:21:03 -06:00
$output = $this->compiler()->compileString($input)->getCss();
file_put_contents($output_file, $output);
return $this;
}
2020-04-18 17:45:11 -06:00
}