forked from jbowens/jBBCode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Node.php
113 lines (97 loc) · 2.47 KB
/
Node.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
namespace JBBCode;
/**
* @author Jackson Owens
*
* A node within the document tree.
*
* Known subclasses: TextNode, ElementNode
*
*/
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 function accept(NodeVisitor $nodeVisitor);
/**
* Returns this node as text (without any bbcode markup)
*
* @return the plain text representation of this node
*/
abstract function getAsText();
/**
* Returns this node as bbcode
*
* @return the bbcode representation of this node
*/
abstract function getAsBBCode();
/**
* Returns this node as HTML
*
* @return the html representation of this node
*/
abstract 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;
}
/**
* Determines whether this node is nested beyond the nest limit of its definition
*
* @return true if the node is over nested, false otherwise
*/
public function beyondDefinitionLimit() {
return false;
}
}