bug #32767 [Yaml] fix comment in multi line value (soufianZantar)
This PR was merged into the 3.4 branch.
Discussion
----------
[Yaml] fix comment in multi line value
| Q | A
| ------------- | ---
| Branch? | 4.3 and lower <!-- see below -->
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | #32667 <!-- #-prefixed issue number(s), if any -->
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.
Additionally (see https://symfony.com/roadmap):
- Bug fixes must be submitted against the lowest maintained branch where they apply
(lowest branches are regularly merged to upper ones so they get the fixes too).
- Features and deprecations must be submitted against branch 4.4.
- Legacy code removals go to the master branch.
-->
Comments after blank lines are read as value in yaml.
```
`$yaml = <<<YAML
parameters:
abc
# Comment
YAML;
var_dump(Symfony\Component\Yaml\Yaml::parse($yaml));`
```
**Result before fix:**
```
array(1) {
["parameters"]=>
string(13) "abc
# Comment"
}
```
**Result after fix:**
```
array(1) {
["parameters"]=>
string(3) "abc"
}
```
Commits
-------
dd945e375c
fix(yml): fix comment in milti line value
This commit is contained in:
commit
f1cb4b59b9
@ -436,6 +436,9 @@ class Parser
|
|||||||
$value = '';
|
$value = '';
|
||||||
|
|
||||||
foreach ($this->lines as $line) {
|
foreach ($this->lines as $line) {
|
||||||
|
if ('' !== ltrim($line) && '#' === ltrim($line)[0]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// If the indentation is not consistent at offset 0, it is to be considered as a ParseError
|
// If the indentation is not consistent at offset 0, it is to be considered as a ParseError
|
||||||
if (0 === $this->offset && !$deprecatedUsage && isset($line[0]) && ' ' === $line[0]) {
|
if (0 === $this->offset && !$deprecatedUsage && isset($line[0]) && ' ' === $line[0]) {
|
||||||
throw new ParseException('Unable to parse.', $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename);
|
throw new ParseException('Unable to parse.', $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename);
|
||||||
|
@ -2292,6 +2292,18 @@ YAML;
|
|||||||
|
|
||||||
return $tests;
|
return $tests;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testMultiLineComment()
|
||||||
|
{
|
||||||
|
$yaml = <<<YAML
|
||||||
|
parameters:
|
||||||
|
abc
|
||||||
|
|
||||||
|
# Comment
|
||||||
|
YAML;
|
||||||
|
|
||||||
|
$this->assertSame(['parameters' => 'abc'], $this->parser->parse($yaml));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class B
|
class B
|
||||||
|
Reference in New Issue
Block a user