public static function build($value) { /*DocumentBuilder*/ $builder = new DocumentBuilder(); if (DataUtils::valueIsMethod($value)) { return $builder->buildOnMethod($value); } else { if (DataUtils::valueIsLink($value)) { return $builder->buildOnURLTemplate($value); } else { if (DataUtils::valueIsFile($value)) { return $builder->buildOnFileTemplate($value); } else { return $builder->buildOnString($value); } } } }
public static function buildDocument($dataObject) { if (is_string($dataObject)) { return DocumentBuilder::build($dataObject); } else { if ($dataObject instanceof Document) { return $dataObject; } else { if ($dataObject instanceof DOMNode) { $docBuilder = new DocumentBuilder(); return $docBuilder->buildOnDOMDocument($dataObject); } } } return null; }
private function buildTree($in, DocumentBuilder $doc) { $pattern = '$(\\[(?:/[a-z]*|[a-z]+[^\\]]*)\\])(\\n){0,1}$i'; // TOKENIZE input stream $tokens = preg_split($pattern, $in, -1, PREG_SPLIT_DELIM_CAPTURE); for ($i = 0; $i < count($tokens); $i++) { $token = $tokens[$i]; /* * If token is an open tag create a TAG object * - Append tag to parent * - Set node to take ownership of children */ if ($this->isOpenToken($token) && ($attributes = $this->parseAttributes($token)) !== null) { $tag = $this->getTagFromToken($token); $doc->writeStartElement($tag, $token); foreach ($attributes as $key => $value) { $doc->writeAttribute($key, $value); } if (array_key_exists($tag, $this->selfClosing)) { $doc->writeEndElement(); } } elseif ($this->isCloseToken($token)) { /* * If close tag matches open tag remove it from the stack * Set node to parent */ $tagName = $this->getTagFromToken($token); if (!$doc->writeEndElement($tagName, $token)) { $doc->writeText($token); } } else { $doc->writeText($token); } } return $doc->getDOMDocument(); }