/**
  * Parses a quoted scalar to YAML.
  *
  * @param string $scalar
  * @param integer &$i
  *
  * @return string A YAML string
  *
  * @throws 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;
 }
Esempio n. 2
0
 /**
  * Parses a quoted scalar to YAML.
  *
  * @param string $scalar
  * @param int    &$i
  *
  * @return string A YAML string
  *
  * @throws ParseException When malformed inline YAML string is parsed
  */
 private static function parseQuotedScalar($scalar, &$i)
 {
     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;
 }