111 lines
2.4 KiB
PHP
111 lines
2.4 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* This file is part of the Peast package
|
||
|
*
|
||
|
* (c) Marco Marchiò <marco.mm89@gmail.com>
|
||
|
*
|
||
|
* For the full copyright and license information refer to the LICENSE file
|
||
|
* distributed with this source code
|
||
|
*/
|
||
|
namespace Peast\Syntax\Node;
|
||
|
|
||
|
use Peast\Query;
|
||
|
use Peast\Selector;
|
||
|
|
||
|
/**
|
||
|
* Root node for scripts and modules.
|
||
|
*
|
||
|
* @author Marco Marchiò <marco.mm89@gmail.com>
|
||
|
*/
|
||
|
class Program extends Node
|
||
|
{
|
||
|
/**
|
||
|
* Map of node properties
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $propertiesMap = array(
|
||
|
"body" => true,
|
||
|
"sourceType" => false
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Source type that is one of the source type constants in the Peast class
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $sourceType = \Peast\Peast::SOURCE_TYPE_SCRIPT;
|
||
|
|
||
|
/**
|
||
|
* Program's body
|
||
|
*
|
||
|
* @var Statement[]|ModuleDeclaration[]
|
||
|
*/
|
||
|
protected $body = array();
|
||
|
|
||
|
/**
|
||
|
* Returns the source type that is one of the source type constants in the
|
||
|
* Peast class
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getSourceType()
|
||
|
{
|
||
|
return $this->sourceType;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets the source type that is one of the source type constants in the
|
||
|
* Peast class
|
||
|
*
|
||
|
* @param string $sourceType Source type
|
||
|
*
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function setSourceType($sourceType)
|
||
|
{
|
||
|
$this->sourceType = $sourceType;
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the program's body
|
||
|
*
|
||
|
* @return Statement[]|ModuleDeclaration[]
|
||
|
*/
|
||
|
public function getBody()
|
||
|
{
|
||
|
return $this->body;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets the program's body
|
||
|
*
|
||
|
* @param Statement[]|ModuleDeclaration[] $body Program's body
|
||
|
*
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function setBody($body)
|
||
|
{
|
||
|
$this->assertArrayOf($body, array("Statement", "ModuleDeclaration"));
|
||
|
$this->body = $body;
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Finds nodes matching the given selector.
|
||
|
*
|
||
|
* @param string $selector Selector
|
||
|
* @param array $options Options array. See Query class
|
||
|
* documentation for available options
|
||
|
*
|
||
|
* @return Query
|
||
|
*
|
||
|
* @throws Selector\Exception
|
||
|
*/
|
||
|
public function query($selector, $options = array())
|
||
|
{
|
||
|
$query = new Query($this, $options);
|
||
|
return $query->find($selector);
|
||
|
}
|
||
|
}
|