[ Index ] |
PHP Cross Reference of phpBB-3.2.11-deutsch |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Nov 11 20:33:01 2020 | Cross-referenced by PHPXref 0.7.1 |