diff options
Diffstat (limited to 'vendor/theseer/tokenizer/src/XMLSerializer.php')
| -rw-r--r-- | vendor/theseer/tokenizer/src/XMLSerializer.php | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/vendor/theseer/tokenizer/src/XMLSerializer.php b/vendor/theseer/tokenizer/src/XMLSerializer.php deleted file mode 100644 index e67a7fe8b..000000000 --- a/vendor/theseer/tokenizer/src/XMLSerializer.php +++ /dev/null @@ -1,79 +0,0 @@ -<?php declare(strict_types = 1); -namespace TheSeer\Tokenizer; - -use DOMDocument; - -class XMLSerializer { - - /** @var \XMLWriter */ - private $writer; - - /** @var Token */ - private $previousToken; - - /** @var NamespaceUri */ - private $xmlns; - - /** - * XMLSerializer constructor. - * - * @param NamespaceUri $xmlns - */ - public function __construct(NamespaceUri $xmlns = null) { - if ($xmlns === null) { - $xmlns = new NamespaceUri('https://github.com/theseer/tokenizer'); - } - $this->xmlns = $xmlns; - } - - public function toDom(TokenCollection $tokens): DOMDocument { - $dom = new DOMDocument(); - $dom->preserveWhiteSpace = false; - $dom->loadXML($this->toXML($tokens)); - - return $dom; - } - - public function toXML(TokenCollection $tokens): string { - $this->writer = new \XMLWriter(); - $this->writer->openMemory(); - $this->writer->setIndent(true); - $this->writer->startDocument(); - $this->writer->startElement('source'); - $this->writer->writeAttribute('xmlns', $this->xmlns->asString()); - - if (\count($tokens) > 0) { - $this->writer->startElement('line'); - $this->writer->writeAttribute('no', '1'); - - $this->previousToken = $tokens[0]; - - foreach ($tokens as $token) { - $this->addToken($token); - } - } - - $this->writer->endElement(); - $this->writer->endElement(); - $this->writer->endDocument(); - - return $this->writer->outputMemory(); - } - - private function addToken(Token $token): void { - if ($this->previousToken->getLine() < $token->getLine()) { - $this->writer->endElement(); - - $this->writer->startElement('line'); - $this->writer->writeAttribute('no', (string)$token->getLine()); - $this->previousToken = $token; - } - - if ($token->getValue() !== '') { - $this->writer->startElement('token'); - $this->writer->writeAttribute('name', $token->getName()); - $this->writer->writeRaw(\htmlspecialchars($token->getValue(), \ENT_NOQUOTES | \ENT_DISALLOWED | \ENT_XML1)); - $this->writer->endElement(); - } - } -} |