textareatabs-8.x-1.x-dev/src/Plugin/Filter/TextAreaTabs.php
src/Plugin/Filter/TextAreaTabs.php
<?php
namespace Drupal\textareatabs\Plugin\Filter;
use Drupal\Component\Utility\Xss;
use Drupal\Core\Form\FormStateInterface;
use Drupal\filter\FilterProcessResult;
use Drupal\filter\Plugin\FilterBase;
/**
* Filter plugin for textareatabs.
*
* @Filter(
* id = "textareatabs",
* title = @Translation("Replace tabs with non-breaking spaces"),
* type = Drupal\filter\Plugin\FilterInterface::TYPE_TRANSFORM_REVERSIBLE,
* settings = {
* "textareatabs_character" = " "
* },
* weight = 0
* )
*/
class TextAreaTabs extends FilterBase {
/**
* {@inheritdoc}
*/
public function process($text, $langcode) {
$text = Xss::filter(str_replace("\t", $this->settings['textareatabs_character'], $text), []);
return new FilterProcessResult($text);
}
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $form_state) {
$form['textareatabs_character'] = [
'#type' => 'textfield',
'#title' => $this->t('Replacement string for each tab'),
'#default_value' => $this->settings['textareatabs_character'],
'#required' => TRUE,
];
return $form;
}
}
