110 lines
2.3 KiB
PHP
110 lines
2.3 KiB
PHP
<?php
|
|
namespace JBBCode;
|
|
|
|
defined('PROJECT_PATH') OR exit('No direct script access allowed');
|
|
|
|
/**
|
|
* A node within the document tree.
|
|
*
|
|
* Known subclasses: TextNode, ElementNode
|
|
*
|
|
* @author jbowens
|
|
*/
|
|
abstract class Node
|
|
{
|
|
/* Pointer to the parent node of this node */
|
|
protected $parent;
|
|
|
|
/* The node id of this node */
|
|
protected $nodeid;
|
|
|
|
/**
|
|
* Returns the node id of this node. (Not really ever used. Dependent upon the parse tree the node exists within.)
|
|
*
|
|
* @return this node's id
|
|
*/
|
|
public function getNodeId()
|
|
{
|
|
return $this->nodeid;
|
|
}
|
|
|
|
/**
|
|
* Returns this node's immediate parent.
|
|
*
|
|
* @return the node's parent
|
|
*/
|
|
public function getParent()
|
|
{
|
|
return $this->parent;
|
|
}
|
|
|
|
/**
|
|
* Determines if this node has a parent.
|
|
*
|
|
* @return true if this node has a parent, false otherwise
|
|
*/
|
|
public function hasParent()
|
|
{
|
|
return $this->parent != null;
|
|
}
|
|
|
|
/**
|
|
* Returns true if this is a text node. Returns false otherwise.
|
|
* (Overridden by TextNode to return true)
|
|
*
|
|
* @return true if this node is a text node
|
|
*/
|
|
public function isTextNode()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Accepts a NodeVisitor
|
|
*
|
|
* @param nodeVisitor the NodeVisitor traversing the graph
|
|
*/
|
|
abstract public function accept(NodeVisitor $nodeVisitor);
|
|
|
|
/**
|
|
* Returns this node as text (without any bbcode markup)
|
|
*
|
|
* @return the plain text representation of this node
|
|
*/
|
|
abstract public function getAsText();
|
|
|
|
/**
|
|
* Returns this node as bbcode
|
|
*
|
|
* @return the bbcode representation of this node
|
|
*/
|
|
abstract public function getAsBBCode();
|
|
|
|
/**
|
|
* Returns this node as HTML
|
|
*
|
|
* @return the html representation of this node
|
|
*/
|
|
abstract public function getAsHTML();
|
|
|
|
/**
|
|
* Sets this node's parent to be the given node.
|
|
*
|
|
* @param parent the node to set as this node's parent
|
|
*/
|
|
public function setParent(Node $parent)
|
|
{
|
|
$this->parent = $parent;
|
|
}
|
|
|
|
/**
|
|
* Sets this node's nodeid
|
|
*
|
|
* @param nodeid this node's node id
|
|
*/
|
|
public function setNodeId($nodeid)
|
|
{
|
|
$this->nodeid = $nodeid;
|
|
}
|
|
|
|
}
|