Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
75.00% covered (warning)
75.00%
3 / 4
CRAP
80.00% covered (warning)
80.00%
8 / 10
NamespaceHeaderNode
0.00% covered (danger)
0.00%
0 / 1
75.00% covered (warning)
75.00%
3 / 4
5.20
80.00% covered (warning)
80.00%
8 / 10
 __construct
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
5 / 5
 toArray
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 getNamespace
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 accept
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
<?php
namespace CirrusSearch\Parser\AST;
use CirrusSearch\Parser\AST\Visitor\Visitor;
use Wikimedia\Assert\Assert;
/**
 * A "namespace header" in the query.
 * Queries can be prefixed with a namespace header that allows to bypass
 * namespaces selection made with API params or Special:Search UI.
 * e.g.:
 * - help:foobar
 *
 * will search foobar in NS_HELP no matter what is selected previously.
 */
class NamespaceHeaderNode extends ParsedNode {
    /**
     * @var string|int "all" or a int
     */
    private $namespace;
    /**
     * @param int $startOffset
     * @param int $endOffset
     * @param int|string $namespace "all" or a int.
     */
    public function __construct( $startOffset, $endOffset, $namespace ) {
        parent::__construct( $startOffset, $endOffset );
        Assert::parameter( is_int( $namespace ) || $namespace === 'all',
            '$namespace', 'must be null, an integer or a string equals to "all"' );
        $this->namespace = $namespace;
    }
    /**
     * @return array
     */
    public function toArray() {
        return [
            'namespaceHeader' => array_merge( parent::baseParams(), [
                'namespace' => $this->namespace
            ] )
        ];
    }
    /**
     * @return int|string
     */
    public function getNamespace() {
        return $this->namespace;
    }
    /**
     * @param Visitor $visitor
     */
    public function accept( Visitor $visitor ) {
        $visitor->visitNamespaceHeader( $this );
    }
}