.=< { Star Gans Tq } >=.
<?php
/**
* @package s9e\TextFormatter
* @copyright Copyright (c) 2010-2020 The s9e authors
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
namespace s9e\TextFormatter\Plugins\FancyPants;
use s9e\TextFormatter\Plugins\ConfiguratorBase;
/**
* This plugin combines some of the functionalities found in SmartyPants and Textile
*
* @link http://daringfireball.net/projects/smartypants/
* @link http://textile.thresholdstate.com/
*/
class Configurator extends ConfiguratorBase
{
/**
* @var string Name of attribute used to for the replacement
*/
protected $attrName = 'char';
/**
* @var string[] List of passes that have been explicitly disabled
*/
protected $disabledPasses = [];
/**
* @var string Name of the tag used to mark the text to replace
*/
protected $tagName = 'FP';
/**
* Plugin's setup
*
* Will initialize create the plugin's tag if it does not exist
*/
protected function setUp()
{
if (isset($this->configurator->tags[$this->tagName]))
{
return;
}
// Create tag
$tag = $this->configurator->tags->add($this->tagName);
// Create attribute
$tag->attributes->add($this->attrName);
// Create a template that replaces its content with the replacement char
$tag->template
= '<xsl:value-of select="@' . htmlspecialchars($this->attrName) . '"/>';
}
/**
* Disable a given pass
*
* @param string $passName
* @return void
*/
public function disablePass($passName)
{
$this->disabledPasses[] = $passName;
}
/**
* Enable a given pass
*
* @param string $passName
* @return void
*/
public function enablePass($passName)
{
foreach (array_keys($this->disabledPasses, $passName, true) as $k)
{
unset($this->disabledPasses[$k]);
}
}
/**
* {@inheritdoc}
*/
public function asConfig()
{
$config = [
'attrName' => $this->attrName,
'tagName' => $this->tagName
];
foreach ($this->disabledPasses as $passName)
{
$config['disable' . $passName] = true;
}
return $config;
}
}