pattern_library-8.x-2.x-dev/src/PatternModifierTypeManager.php
src/PatternModifierTypeManager.php
<?php
namespace Drupal\pattern_library;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Plugin\DefaultPluginManager;
use Drupal\pattern_library\Annotation\PatternModifierType;
use Drupal\pattern_library\Plugin\PatternModifierTypeInterface;
/**
* Pattern library modifier manager.
*/
class PatternModifierTypeManager extends DefaultPluginManager implements PatternModifierTypeManagerInterface {
/**
* {@inheritdoc}
*/
public function __construct(
\Traversable $namespaces,
CacheBackendInterface $cache_backend,
ModuleHandlerInterface $module_handler
) {
parent::__construct(
'Plugin/PatternModifierType',
$namespaces,
$module_handler,
PatternModifierTypeInterface::class,
PatternModifierType::class
);
$this->alterInfo('pattern_library_modifier');
$this->setCacheBackend($cache_backend, 'pattern_library_modifier_type');
}
/**
* {@inheritDoc}
*/
public function processModifierValue($plugin_id, $value) {
$classname = $this->getDefinitionClassname($plugin_id);
if (!$classname) {
return $value;
}
$value = $classname::castValue($value);
return $classname::transformValue($value);
}
/**
* Get library pattern modifier class name.
*
* @param $plugin_id
* The modifier type plugin id.
*
* @return string|null
* The modifier plugin class name; otherwise false if it doesn't exist.
*/
protected function getDefinitionClassname($plugin_id) {
$definition = $this->getDefinition($plugin_id);
return isset($definition['class']) && class_exists($definition['class'])
? $definition['class']
: FALSE;
}
}
