Seditio Source
Root |
./othercms/phpBB3/vendor/s9e/text-formatter/src/Configurator/Helpers/TemplateParser/IRProcessor.php
<?php

/**
* @package   s9e\TextFormatter
* @copyright Copyright (c) 2010-2021 The s9e authors
* @license   http://www.opensource.org/licenses/mit-license.php The MIT License
*/
namespace s9e\TextFormatter\Configurator\Helpers\TemplateParser;

use
DOMDocument;
use
DOMElement;
use
DOMNode;
use
DOMXPath;

abstract class
IRProcessor
{
   
/**
    * XSL namespace
    */
   
const XMLNS_XSL = 'http://www.w3.org/1999/XSL/Transform';

   
/**
    * @var DOMXPath
    */
   
protected $xpath;

   
/**
    * Create and append an element to given node in the IR
    *
    * @param  DOMElement $parentNode Parent node of the element
    * @param  string     $name       Tag name of the element
    * @param  string     $value      Value of the element
    * @return DOMElement             The created element
    */
   
protected function appendElement(DOMElement $parentNode, $name, $value = '')
    {
        return
$parentNode->appendChild($parentNode->ownerDocument->createElement($name, $value));
    }

   
/**
    * Create and store an instance of DOMXPath for given document
    *
    * @param  DOMDocument $dom
    * @return void
    */
   
protected function createXPath(DOMDocument $dom)
    {
       
$this->xpath = new DOMXPath($dom);
    }

   
/**
    * Evaluate an XPath expression and return its result
    *
    * @param  string  $expr XPath expression
    * @param  DOMNode $node Context node
    * @return mixed
    */
   
protected function evaluate($expr, DOMNode $node = null)
    {
        return (isset(
$node)) ? $this->xpath->evaluate($expr, $node) : $this->xpath->evaluate($expr);
    }

   
/**
    * Run an XPath query and return its result
    *
    * @param  string       $query XPath query
    * @param  DOMNode      $node  Context node
    * @return \DOMNodeList
    */
   
protected function query($query, DOMNode $node = null)
    {
        return (isset(
$node)) ? $this->xpath->query($query, $node) : $this->xpath->query($query);
    }
}