[ Index ]

PHP Cross Reference of phpBB-3.2.11-deutsch

title

Body

[close]

/vendor/s9e/text-formatter/src/Plugins/BBCodes/ -> Configurator.php (source)

   1  <?php
   2  
   3  /*
   4  * @package   s9e\TextFormatter
   5  * @copyright Copyright (c) 2010-2019 The s9e Authors
   6  * @license   http://www.opensource.org/licenses/mit-license.php The MIT License
   7  */
   8  namespace s9e\TextFormatter\Plugins\BBCodes;
   9  use ArrayAccess;
  10  use Countable;
  11  use InvalidArgumentException;
  12  use Iterator;
  13  use RuntimeException;
  14  use s9e\TextFormatter\Configurator\Helpers\RegexpBuilder;
  15  use s9e\TextFormatter\Configurator\Helpers\RegexpParser;
  16  use s9e\TextFormatter\Configurator\JavaScript\Dictionary;
  17  use s9e\TextFormatter\Configurator\Traits\CollectionProxy;
  18  use s9e\TextFormatter\Plugins\BBCodes\Configurator\BBCode;
  19  use s9e\TextFormatter\Plugins\BBCodes\Configurator\BBCodeCollection;
  20  use s9e\TextFormatter\Plugins\BBCodes\Configurator\BBCodeMonkey;
  21  use s9e\TextFormatter\Plugins\BBCodes\Configurator\Repository;
  22  use s9e\TextFormatter\Plugins\BBCodes\Configurator\RepositoryCollection;
  23  use s9e\TextFormatter\Plugins\ConfiguratorBase;
  24  class Configurator extends ConfiguratorBase implements ArrayAccess, Countable, Iterator
  25  {
  26      use CollectionProxy;
  27      public $bbcodeMonkey;
  28      public $collection;
  29      protected $quickMatch = '[';
  30      protected $regexp = '#\\[/?(\\*|[-\\w]+)(?=[\\]\\s=:/])#';
  31      public $repositories;
  32  	protected function setUp()
  33      {
  34          $this->bbcodeMonkey = new BBCodeMonkey($this->configurator);
  35          $this->collection   = new BBCodeCollection;
  36          $this->repositories = new RepositoryCollection($this->bbcodeMonkey);
  37          $this->repositories->add('default', __DIR__ . '/Configurator/repository.xml');
  38      }
  39  	public function addCustom($usage, $template, array $options = [])
  40      {
  41          $config = $this->bbcodeMonkey->create($usage, $template);
  42          if (isset($options['tagName']))
  43              $config['bbcode']->tagName = $options['tagName'];
  44          if (isset($options['rules']))
  45              $config['tag']->rules->merge($options['rules']);
  46          return $this->addFromConfig($config);
  47      }
  48  	public function addFromRepository($name, $repository = 'default', array $vars = [])
  49      {
  50          if (!($repository instanceof Repository))
  51          {
  52              if (!$this->repositories->exists($repository))
  53                  throw new InvalidArgumentException("Repository '" . $repository . "' does not exist");
  54              $repository = $this->repositories->get($repository);
  55          }
  56          return $this->addFromConfig($repository->get($name, $vars));
  57      }
  58  	protected function addFromConfig(array $config)
  59      {
  60          $bbcodeName = $config['bbcodeName'];
  61          $bbcode     = $config['bbcode'];
  62          $tag        = $config['tag'];
  63          if (!isset($bbcode->tagName))
  64              $bbcode->tagName = $bbcodeName;
  65          $this->configurator->templateNormalizer->normalizeTag($tag);
  66          $this->configurator->templateChecker->checkTag($tag);
  67          $this->collection->add($bbcodeName, $bbcode);
  68          $this->configurator->tags->add($bbcode->tagName, $tag);
  69          return $bbcode;
  70      }
  71  	public function asConfig()
  72      {
  73          if (!\count($this->collection))
  74              return;
  75          return [
  76              'bbcodes'    => $this->collection->asConfig(),
  77              'quickMatch' => $this->quickMatch,
  78              'regexp'     => $this->regexp
  79          ];
  80      }
  81  }


Generated: Wed Nov 11 20:33:01 2020 Cross-referenced by PHPXref 0.7.1