-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDocument.php
executable file
·81 lines (67 loc) · 1.48 KB
/
Document.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
<?php
namespace Overblog\MediaWiki;
/**
* File Document
*
* @package MediaWiki
* @subpackage Document
* @version 1.0
* @author Yannick Le Guédart
*/
use Overblog\MediaWiki\Node;
use Overblog\MediaWiki\LeafParagraph;
use Overblog\MediaWiki\LeafHeading;
use Overblog\MediaWiki\LeafPre;
/**
* Class Document
*
* This class handles mediawiki documents.
*
* @package MediaWiki
* @subpackage Document
* @author Yannick Le Guédart
*/
class Document
{
/**
* @var array $_nodes
*/
private $_nodes = array();
/**
* Class constuctor
*
* @param mixed $data json StdClass, json string or HTML string
*/
public function __construct($data)
{
if (is_object($data)
and $data->type === Node::NODE_TYPE_DOCUMENT
)
{
if (isset($data->children) and is_array($data->children))
{
foreach ($data->children as $c)
{
$class = Node::getClassFromNode($c->type);
$this->_nodes[] = new $class($c);
}
}
}
}
public function render()
{
$text = '';
foreach ($this->_nodes as $n)
{
if ('Overblog\MediaWiki\LeafPre' === get_class($n))
{
$text .= $n->render();
}
else
{
$text .= nl2br($n->render());
}
}
return $text;
}
}