1be906b56SAndreas Gohr<?php 2be906b56SAndreas Gohr 3be906b56SAndreas Gohrnamespace dokuwiki\Parsing\ParserMode; 4be906b56SAndreas Gohr 5be906b56SAndreas Gohruse dokuwiki\Parsing\Lexer\Lexer; 6be906b56SAndreas Gohr 7be906b56SAndreas Gohrclass Entity extends AbstractMode 8be906b56SAndreas Gohr{ 9*bcaec9f4SAndreas Gohr protected $entities = []; 10be906b56SAndreas Gohr protected $pattern = ''; 11be906b56SAndreas Gohr 12be906b56SAndreas Gohr /** 13be906b56SAndreas Gohr * Entity constructor. 14be906b56SAndreas Gohr * @param string[] $entities 15be906b56SAndreas Gohr */ 16be906b56SAndreas Gohr public function __construct($entities) 17be906b56SAndreas Gohr { 18be906b56SAndreas Gohr $this->entities = $entities; 19be906b56SAndreas Gohr } 20be906b56SAndreas Gohr 21be906b56SAndreas Gohr 22be906b56SAndreas Gohr /** @inheritdoc */ 23be906b56SAndreas Gohr public function preConnect() 24be906b56SAndreas Gohr { 25be906b56SAndreas Gohr if (!count($this->entities) || $this->pattern != '') return; 26be906b56SAndreas Gohr 27be906b56SAndreas Gohr $sep = ''; 28be906b56SAndreas Gohr foreach ($this->entities as $entity) { 29be906b56SAndreas Gohr $this->pattern .= $sep . Lexer::escape($entity); 30be906b56SAndreas Gohr $sep = '|'; 31be906b56SAndreas Gohr } 32be906b56SAndreas Gohr } 33be906b56SAndreas Gohr 34be906b56SAndreas Gohr /** @inheritdoc */ 35be906b56SAndreas Gohr public function connectTo($mode) 36be906b56SAndreas Gohr { 37be906b56SAndreas Gohr if (!count($this->entities)) return; 38be906b56SAndreas Gohr 39be906b56SAndreas Gohr if (strlen($this->pattern) > 0) { 40be906b56SAndreas Gohr $this->Lexer->addSpecialPattern($this->pattern, $mode, 'entity'); 41be906b56SAndreas Gohr } 42be906b56SAndreas Gohr } 43be906b56SAndreas Gohr 44be906b56SAndreas Gohr /** @inheritdoc */ 45be906b56SAndreas Gohr public function getSort() 46be906b56SAndreas Gohr { 47be906b56SAndreas Gohr return 260; 48be906b56SAndreas Gohr } 49be906b56SAndreas Gohr} 50