Parses a quoted scalar to YAML.
string $scalar:
integer &$i:
string A YAML string
ParseException When malformed inline YAML string is parsed
private static function parseQuotedScalar($scalar, &$i) {
// Only check the current item we're dealing with (for sequences)
$subject = substr($scalar, $i);
$items = preg_split('/[\'"]\\s*(?:[,:]|[}\\]]\\s*,)/', $subject);
$subject = substr($subject, 0, strlen($items[0]) + 1);
if (!preg_match('/' . self::REGEX_QUOTED_STRING . '/Au', substr($scalar, $i), $match)) {
throw new ParseException(sprintf('Malformed inline YAML string (%s).', substr($scalar, $i)));
}
$output = substr($match[0], 1, strlen($match[0]) - 2);
$unescaper = new Unescaper();
if ('"' == $scalar[$i]) {
$output = $unescaper
->unescapeDoubleQuotedString($output);
}
else {
$output = $unescaper
->unescapeSingleQuotedString($output);
}
$i += strlen($match[0]);
return $output;
}