Skip to content

Commit ad5778d

Browse files
authored
Merge pull request #24 from staabm/patch-1
Simplify XMLSerializer
2 parents 27f1b45 + 84cb716 commit ad5778d

File tree

1 file changed

+27
-37
lines changed

1 file changed

+27
-37
lines changed

src/XMLSerializer.php

Lines changed: 27 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@
55

66
class XMLSerializer {
77

8-
/** @var \XMLWriter */
9-
private $writer;
10-
11-
/** @var Token */
12-
private $previousToken;
13-
148
/** @var NamespaceUri */
159
private $xmlns;
1610

@@ -35,45 +29,41 @@ public function toDom(TokenCollection $tokens): DOMDocument {
3529
}
3630

3731
public function toXML(TokenCollection $tokens): string {
38-
$this->writer = new \XMLWriter();
39-
$this->writer->openMemory();
40-
$this->writer->setIndent(true);
41-
$this->writer->startDocument();
42-
$this->writer->startElement('source');
43-
$this->writer->writeAttribute('xmlns', $this->xmlns->asString());
32+
$writer = new \XMLWriter();
33+
$writer->openMemory();
34+
$writer->setIndent(true);
35+
$writer->startDocument();
36+
$writer->startElement('source');
37+
$writer->writeAttribute('xmlns', $this->xmlns->asString());
4438

4539
if (\count($tokens) > 0) {
46-
$this->writer->startElement('line');
47-
$this->writer->writeAttribute('no', '1');
40+
$writer->startElement('line');
41+
$writer->writeAttribute('no', '1');
4842

49-
$this->previousToken = $tokens[0];
43+
$previousToken = $tokens[0];
5044

5145
foreach ($tokens as $token) {
52-
$this->addToken($token);
46+
if ($previousToken->getLine() < $token->getLine()) {
47+
$writer->endElement();
48+
49+
$writer->startElement('line');
50+
$writer->writeAttribute('no', (string)$token->getLine());
51+
$previousToken = $token;
52+
}
53+
54+
if ($token->getValue() !== '') {
55+
$writer->startElement('token');
56+
$writer->writeAttribute('name', $token->getName());
57+
$writer->writeRaw(\htmlspecialchars($token->getValue(), \ENT_NOQUOTES | \ENT_DISALLOWED | \ENT_XML1));
58+
$writer->endElement();
59+
}
5360
}
5461
}
5562

56-
$this->writer->endElement();
57-
$this->writer->endElement();
58-
$this->writer->endDocument();
59-
60-
return $this->writer->outputMemory();
61-
}
62-
63-
private function addToken(Token $token): void {
64-
if ($this->previousToken->getLine() < $token->getLine()) {
65-
$this->writer->endElement();
66-
67-
$this->writer->startElement('line');
68-
$this->writer->writeAttribute('no', (string)$token->getLine());
69-
$this->previousToken = $token;
70-
}
63+
$writer->endElement();
64+
$writer->endElement();
65+
$writer->endDocument();
7166

72-
if ($token->getValue() !== '') {
73-
$this->writer->startElement('token');
74-
$this->writer->writeAttribute('name', $token->getName());
75-
$this->writer->writeRaw(\htmlspecialchars($token->getValue(), \ENT_NOQUOTES | \ENT_DISALLOWED | \ENT_XML1));
76-
$this->writer->endElement();
77-
}
67+
return $writer->outputMemory();
7868
}
7969
}

0 commit comments

Comments
 (0)