You are here

public static function Inline::parseScalar in Translation template extractor 6.3

Same name and namespace in other branches
  1. 7.3 vendor/Symfony/Component/Yaml/Inline.php \Symfony\Component\Yaml\Inline::parseScalar()
  2. 7.2 vendor/Symfony/Component/Yaml/Inline.php \Symfony\Component\Yaml\Inline::parseScalar()

Parses a scalar to a YAML string.

Parameters

scalar $scalar:

string $delimiters:

array $stringDelimiters:

integer &$i:

Boolean $evaluate:

Return value

string A YAML string

Throws

ParseException When malformed inline YAML string is parsed

6 calls to Inline::parseScalar()
Inline::evaluateScalar in vendor/Symfony/Component/Yaml/Inline.php
Evaluates scalars and replaces magic values.
Inline::parse in vendor/Symfony/Component/Yaml/Inline.php
Converts a YAML string to a PHP array.
Inline::parseMapping in vendor/Symfony/Component/Yaml/Inline.php
Parses a mapping to a YAML string.
Inline::parseSequence in vendor/Symfony/Component/Yaml/Inline.php
Parses a sequence to a YAML string.
InlineTest::testParseScalarWithCorrectlyQuotedStringShouldReturnString in vendor/Symfony/Component/Yaml/Tests/InlineTest.php

... See full list

File

vendor/Symfony/Component/Yaml/Inline.php, line 193

Class

Inline
Inline implements a YAML parser/dumper for the YAML inline syntax.

Namespace

Symfony\Component\Yaml

Code

public static function parseScalar($scalar, $delimiters = null, $stringDelimiters = array(
  '"',
  "'",
), &$i = 0, $evaluate = true) {
  if (in_array($scalar[$i], $stringDelimiters)) {

    // quoted scalar
    $output = self::parseQuotedScalar($scalar, $i);
    if (null !== $delimiters) {
      $tmp = ltrim(substr($scalar, $i), ' ');
      if (!in_array($tmp[0], $delimiters)) {
        throw new ParseException(sprintf('Unexpected characters (%s).', substr($scalar, $i)));
      }
    }
  }
  else {

    // "normal" string
    if (!$delimiters) {
      $output = substr($scalar, $i);
      $i += strlen($output);

      // remove comments
      if (false !== ($strpos = strpos($output, ' #'))) {
        $output = rtrim(substr($output, 0, $strpos));
      }
    }
    elseif (preg_match('/^(.+?)(' . implode('|', $delimiters) . ')/', substr($scalar, $i), $match)) {
      $output = $match[1];
      $i += strlen($output);
    }
    else {
      throw new ParseException(sprintf('Malformed inline YAML string (%s).', $scalar));
    }
    $output = $evaluate ? self::evaluateScalar($output) : $output;
  }
  return $output;
}