src/Pug/Symfony/Traits/Options.php
<?php
declare(strict_types=1);
namespace Pug\Symfony\Traits;
use Pug\Pug;
/**
* Trait Options.
*
* @property Pug|null $pug
*
* @method Pug getRenderer()
* @method array getRendererOptions()
*/
trait Options
{
/**
* @var array
*/
protected $options;
/**
* Get a Pug engine option or the default value passed as second parameter (null if omitted).
*
* @param string|string[] $name option path (string) or deep path (array of strings).
* @param mixed $default value to return if the option is not set (null by default).
*
* @return mixed
*/
public function getOptionDefault($name, $default = null)
{
if ($this->pug === null) {
$options = $this->getRendererOptions();
return array_key_exists($name, $options) ? $options[$name] : $default;
}
$pug = $this->getRenderer();
return $pug->hasOption($name) ? $pug->getOption($name) : $default;
}
/**
* Set a Pug engine option.
*
* @param string|string[] $name option path (string) or deep path (array of strings).
* @param mixed $value new value.
*/
public function setOption($name, $value): void
{
if ($this->pug === null) {
$this->getRendererOptions();
$this->options[$name] = $value;
return;
}
$this->getRenderer()->setOption($name, $value);
}
/**
* Set multiple options of the Pug engine.
*
* @param array $options
*/
public function setOptions(array $options): void
{
if ($this->pug === null) {
$this->options = array_merge($this->getRendererOptions(), $options);
return;
}
$this->getRenderer()->setOptions($options);
}
/**
* Get pug variables shared across views.
*
* @return array
*/
public function getSharedVariables(): array
{
return $this->getOptionDefault('shared_variables', []);
}
}