[Yaml] Nested merge keys
This commit is contained in:
parent
6f8a37cbae
commit
500c57e6df
@ -113,6 +113,9 @@ class Parser
|
|||||||
$data[] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport);
|
$data[] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($isRef) {
|
||||||
|
$this->refs[$isRef] = end($data);
|
||||||
|
}
|
||||||
} elseif (preg_match('#^(?P<key>'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\[\{].*?) *\:(\s+(?P<value>.+?))?\s*$#u', $this->currentLine, $values) && (false === strpos($values['key'], ' #') || in_array($values['key'][0], array('"', "'")))) {
|
} elseif (preg_match('#^(?P<key>'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\[\{].*?) *\:(\s+(?P<value>.+?))?\s*$#u', $this->currentLine, $values) && (false === strpos($values['key'], ' #') || in_array($values['key'][0], array('"', "'")))) {
|
||||||
if ($context && 'sequence' == $context) {
|
if ($context && 'sequence' == $context) {
|
||||||
throw new ParseException('You cannot define a mapping item when in a sequence');
|
throw new ParseException('You cannot define a mapping item when in a sequence');
|
||||||
@ -191,6 +194,9 @@ class Parser
|
|||||||
$data[$key] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport);
|
$data[$key] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($isRef) {
|
||||||
|
$this->refs[$isRef] = $data[$key];
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// multiple documents are not supported
|
// multiple documents are not supported
|
||||||
if ('---' === $this->currentLine) {
|
if ('---' === $this->currentLine) {
|
||||||
@ -248,10 +254,6 @@ class Parser
|
|||||||
|
|
||||||
throw new ParseException($error, $this->getRealCurrentLineNb() + 1, $this->currentLine);
|
throw new ParseException($error, $this->getRealCurrentLineNb() + 1, $this->currentLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($isRef) {
|
|
||||||
$this->refs[$isRef] = end($data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($mbEncoding)) {
|
if (isset($mbEncoding)) {
|
||||||
|
@ -23,5 +23,16 @@ yaml: |
|
|||||||
isit: tested
|
isit: tested
|
||||||
head:
|
head:
|
||||||
<<: [ *foo , *dong , *foo2 ]
|
<<: [ *foo , *dong , *foo2 ]
|
||||||
|
taz: &taz
|
||||||
|
a: Steve
|
||||||
|
w:
|
||||||
|
p: 1234
|
||||||
|
nested:
|
||||||
|
<<: *taz
|
||||||
|
d: Doug
|
||||||
|
w: &nestedref
|
||||||
|
p: 12345
|
||||||
|
z:
|
||||||
|
<<: *nestedref
|
||||||
php: |
|
php: |
|
||||||
array('foo' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian'), 'bar' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'x' => 'Oren'), 'foo2' => array('a' => 'Ballmer'), 'ding' => array('fi', 'fei', 'fo', 'fam'), 'check' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'fi', 'fei', 'fo', 'fam', 'isit' => 'tested'), 'head' => array('a' => 'Ballmer', 'b' => 'Clark', 'c' => 'Brian', 'fi', 'fei', 'fo', 'fam'))
|
array('foo' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian'), 'bar' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'x' => 'Oren'), 'foo2' => array('a' => 'Ballmer'), 'ding' => array('fi', 'fei', 'fo', 'fam'), 'check' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'fi', 'fei', 'fo', 'fam', 'isit' => 'tested'), 'head' => array('a' => 'Ballmer', 'b' => 'Clark', 'c' => 'Brian', 'fi', 'fei', 'fo', 'fam'), 'taz' => array('a' => 'Steve', 'w' => array('p' => 1234)), 'nested' => array('a' => 'Steve', 'w' => array('p' => 12345), 'd' => 'Doug', 'z' => array('p' => 12345)),)
|
||||||
|
Reference in New Issue
Block a user