[ Index ]

PHP Cross Reference of phpBB-3.2.11-deutsch

title

Body

[close]

/vendor/s9e/text-formatter/src/Configurator/TemplateNormalizations/ -> ConvertCurlyExpressionsInText.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\Configurator\TemplateNormalizations;
   9  use DOMNode;
  10  class ConvertCurlyExpressionsInText extends AbstractNormalization
  11  {
  12      protected $queries = ['//*[namespace-uri() != $XSL]/text()[contains(., "{@") or contains(., "{$")]'];
  13      protected function insertTextBefore($text, $node)
  14      {
  15          if ($text > '')
  16              $node->parentNode->insertBefore($this->createText($text), $node);
  17      }
  18      protected function normalizeNode(DOMNode $node)
  19      {
  20          $parentNode = $node->parentNode;
  21          \preg_match_all(
  22              '#\\{([$@][-\\w]+)\\}#',
  23              $node->textContent,
  24              $matches,
  25              \PREG_SET_ORDER | \PREG_OFFSET_CAPTURE
  26          );
  27          $lastPos = 0;
  28          foreach ($matches as $m)
  29          {
  30              $pos = $m[0][1];
  31              if ($pos > $lastPos)
  32              {
  33                  $text = \substr($node->textContent, $lastPos, $pos - $lastPos);
  34                  $this->insertTextBefore($text, $node);
  35              }
  36              $lastPos = $pos + \strlen($m[0][0]);
  37              $parentNode
  38                  ->insertBefore($this->createElement('xsl:value-of'), $node)
  39                  ->setAttribute('select', $m[1][0]);
  40          }
  41          $text = \substr($node->textContent, $lastPos);
  42          $this->insertTextBefore($text, $node);
  43          $parentNode->removeChild($node);
  44      }
  45  }


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