[Yaml] removed wrong comment removal inside a string block

This commit is contained in:
Jean-François Simon 2013-07-11 11:21:24 +02:00
parent 183ff09bf1
commit 9c5f8c6b96
2 changed files with 61 additions and 2 deletions

View File

@ -304,14 +304,16 @@ class Parser
$isItUnindentedCollection = $this->isStringUnIndentedCollectionItem($this->currentLine);
while ($this->moveToNextLine()) {
// We are in string block (ie. after a line ending with "|")
$removeComments = !preg_match('~(.*)\|[\s]*$~', $this->currentLine);
while ($this->moveToNextLine()) {
if ($isItUnindentedCollection && !$this->isStringUnIndentedCollectionItem($this->currentLine)) {
$this->moveToPreviousLine();
break;
}
if ($this->isCurrentLineEmpty()) {
if ($removeComments && $this->isCurrentLineEmpty() || $this->isCurrentLineBlank()) {
if ($this->isCurrentLineBlank()) {
$data[] = substr($this->currentLine, $newIndent);
}

View File

@ -522,6 +522,63 @@ EOF;
$this->assertEquals(array('hash' => null), Yaml::parse($input));
}
public function testStringBlockWithComments()
{
$this->assertEquals(array('content' => <<<EOT
# comment 1
header
# comment 2
<body>
<h1>title</h1>
</body>
footer # comment3
EOT
), Yaml::parse(<<<EOF
content: |
# comment 1
header
# comment 2
<body>
<h1>title</h1>
</body>
footer # comment3
EOF
));
}
public function testNestedStringBlockWithComments()
{
$this->assertEquals(array(array('content' => <<<EOT
# comment 1
header
# comment 2
<body>
<h1>title</h1>
</body>
footer # comment3
EOT
)), Yaml::parse(<<<EOF
-
content: |
# comment 1
header
# comment 2
<body>
<h1>title</h1>
</body>
footer # comment3
EOF
));
}
}
class B