Import Ruty
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
|
||||
namespace RtfHtmlPhp;
|
||||
|
||||
class Group extends Element
|
||||
{
|
||||
public $parent;
|
||||
public $children;
|
||||
|
||||
/**
|
||||
* Create a new Group, with no parent and no children.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->parent = null;
|
||||
$this->children = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns group type
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
// No children? Then the group type is null.
|
||||
if (count($this->children) == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$child = $this->children[0];
|
||||
|
||||
// If the first child is a control word, then
|
||||
// the group type is the word.
|
||||
if ($child instanceof ControlWord) {
|
||||
return $child->word;
|
||||
}
|
||||
|
||||
// If the first child is a control symbol, then
|
||||
// the group type is * for a special symbol, or null.
|
||||
if ($child instanceof ControlSymbol) {
|
||||
return ($child->symbol == '*') ? '*' : null;
|
||||
}
|
||||
|
||||
// If first child is neither word nor symbol, then
|
||||
// group type is null.
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* If a group contains a '*' symbol as its first child,
|
||||
* then it is a destination group.
|
||||
*
|
||||
* @return bool|null Group destination
|
||||
*/
|
||||
public function isDestination()
|
||||
{
|
||||
// If group has no children, then destination is null.
|
||||
if (count($this->children) == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$child = $this->children[0];
|
||||
|
||||
// First child not a control symbol?
|
||||
if (!$child instanceof ControlSymbol) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $child->symbol == '*';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns string representation of the object for debug purposes
|
||||
*
|
||||
* @param int $level Indentation level
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function toString($level = 0)
|
||||
{
|
||||
$str = str_repeat(" ", $level) . "{\n";
|
||||
|
||||
foreach ($this->children as $child) {
|
||||
/*
|
||||
// Skip some group types:
|
||||
if ($child instanceof Group) {
|
||||
if ($child->GetType() == "fonttbl") continue;
|
||||
if ($child->GetType() == "colortbl") continue;
|
||||
if ($child->GetType() == "stylesheet") continue;
|
||||
if ($child->GetType() == "info") continue;
|
||||
// Skip any pictures:
|
||||
if (substr($child->GetType(), 0, 4) == "pict") continue;
|
||||
if ($child->IsDestination()) continue;
|
||||
}
|
||||
*/
|
||||
$str .= $child->toString($level + 1);
|
||||
}
|
||||
|
||||
return $str . str_repeat(" ", $level) . "}\n";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user