Seditio Source
Root |
./othercms/phpBB3/vendor/s9e/text-formatter/src/Configurator/RendererGenerators/PHP/XPathConvertor/Convertors/BooleanOperators.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\RendererGenerators\PHP\XPathConvertor\Convertors;

class
BooleanOperators extends AbstractConvertor
{
   
/**
    * {@inheritdoc}
    */
   
public function getMatchers(): array
    {
        return [
           
'BooleanExpression:And'  => '((?&Boolean)) and ((?&BooleanExpression)|(?&Boolean))',
           
'Boolean:BooleanSubExpr' => '\\( ((?&BooleanExpression)|(?&Boolean)) \\)',
           
'BooleanExpression:Or'   => '((?&Boolean)) or ((?&BooleanExpression)|(?&Boolean))'
       
];
    }

   
/**
    * Convert a "and" operation
    *
    * @param  string $expr1
    * @param  string $expr2
    * @return string
    */
   
public function parseAnd($expr1, $expr2)
    {
        return
$this->recurse($expr1) . '&&' . $this->recurse($expr2);
    }

   
/**
    * Convert a boolean subexpression
    *
    * @param  string $expr
    * @return string
    */
   
public function parseBooleanSubExpr($expr)
    {
        return
'(' . $this->recurse($expr) . ')';
    }

   
/**
    * Convert a "or" operation
    *
    * @param  string $expr1
    * @param  string $expr2
    * @return string
    */
   
public function parseOr($expr1, $expr2)
    {
        return
$this->recurse($expr1) . '||' . $this->recurse($expr2);
    }
}