private static function Inline::parseMapping in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/symfony/yaml/Inline.php \Symfony\Component\Yaml\Inline::parseMapping()
Parses a mapping to a YAML string.
Parameters
string $mapping:
int &$i:
array $references:
Return value
string A YAML string
Throws
ParseException When malformed inline YAML string is parsed
2 calls to Inline::parseMapping()
- Inline::parse in vendor/
symfony/ yaml/ Inline.php - Converts a YAML string to a PHP array.
- Inline::parseSequence in vendor/
symfony/ yaml/ Inline.php - Parses a sequence to a YAML string.
File
- vendor/
symfony/ yaml/ Inline.php, line 345
Class
- Inline
- Inline implements a YAML parser/dumper for the YAML inline syntax.
Namespace
Symfony\Component\YamlCode
private static function parseMapping($mapping, &$i = 0, $references = array()) {
$output = array();
$len = strlen($mapping);
++$i;
// {foo: bar, bar:foo, ...}
while ($i < $len) {
switch ($mapping[$i]) {
case ' ':
case ',':
++$i;
continue 2;
case '}':
if (self::$objectForMap) {
return (object) $output;
}
return $output;
}
// key
$key = self::parseScalar($mapping, array(
':',
' ',
), array(
'"',
"'",
), $i, false);
// value
$done = false;
while ($i < $len) {
switch ($mapping[$i]) {
case '[':
// nested sequence
$value = self::parseSequence($mapping, $i, $references);
// Spec: Keys MUST be unique; first one wins.
// Parser cannot abort this mapping earlier, since lines
// are processed sequentially.
if (!isset($output[$key])) {
$output[$key] = $value;
}
$done = true;
break;
case '{':
// nested mapping
$value = self::parseMapping($mapping, $i, $references);
// Spec: Keys MUST be unique; first one wins.
// Parser cannot abort this mapping earlier, since lines
// are processed sequentially.
if (!isset($output[$key])) {
$output[$key] = $value;
}
$done = true;
break;
case ':':
case ' ':
break;
default:
$value = self::parseScalar($mapping, array(
',',
'}',
), array(
'"',
"'",
), $i, true, $references);
// Spec: Keys MUST be unique; first one wins.
// Parser cannot abort this mapping earlier, since lines
// are processed sequentially.
if (!isset($output[$key])) {
$output[$key] = $value;
}
$done = true;
--$i;
}
++$i;
if ($done) {
continue 2;
}
}
}
throw new ParseException(sprintf('Malformed inline YAML string %s', $mapping));
}