CodemirrorModePluginManager.php in The CodeMirror Editor 8
File
src/CodemirrorModePluginManager.php
View source
<?php
namespace Drupal\codemirror_editor;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Plugin\DefaultPluginManager;
use Drupal\Core\Plugin\Discovery\YamlDiscovery;
use Drupal\Core\Plugin\Factory\ContainerFactory;
class CodemirrorModePluginManager extends DefaultPluginManager implements CodemirrorModeManagerInterface {
protected $configFactory;
protected $defaults = [
'id' => '',
'label' => '',
'usage' => [],
'dependencies' => [],
'class' => 'Drupal\\codemirror_editor\\CodemirrorModeDefault',
];
public function __construct(ModuleHandlerInterface $module_handler, CacheBackendInterface $cache_backend, ConfigFactoryInterface $config_factory) {
$this->configFactory = $config_factory;
$this->factory = new ContainerFactory($this);
$this->moduleHandler = $module_handler;
$this
->alterInfo('codemirror_mode_info');
$this
->setCacheBackend($cache_backend, 'codemirror_mode_plugins');
}
protected function getDiscovery() {
if (!isset($this->discovery)) {
$this->discovery = new YamlDiscovery('codemirror_modes', $this->moduleHandler
->getModuleDirectories());
}
return $this->discovery;
}
public function getActiveModes() {
$enabled_modes = $this->configFactory
->get('codemirror_editor.settings')
->get('language_modes');
$modes = [];
foreach ($this
->getDefinitions() as $mode => $definition) {
if (in_array($mode, $enabled_modes) || count($definition['usage']) > 0) {
$modes[] = $mode;
foreach ($definition['dependencies'] as $dependency) {
$modes[] = $dependency;
}
}
}
return array_unique($modes);
}
public function normalizeMode($mode) {
$mode = strtolower($mode);
if (strpos($mode, '/') === FALSE) {
if ($mode == 'html') {
$mode = 'text/html';
}
else {
$modes = $this
->getDefinitions();
if (isset($modes[$mode])) {
$mode = reset($modes[$mode]['mime_types']);
}
}
}
return $mode;
}
}