class Escaper

Escaper encapsulates escaping rules for single and double-quoted YAML strings.

@author Matthew Lewinski <matthew@lewinski.org>

Hierarchy

  • class \Symfony\Component\Yaml\Escaper

Expanded class hierarchy of Escaper

File

drupal/core/vendor/symfony/yaml/Symfony/Component/Yaml/Escaper.php, line 19

Namespace

Symfony\Component\Yaml
View source
class Escaper {

  // Characters that would cause a dumped string to require double quoting.
  const REGEX_CHARACTER_TO_ESCAPE = "[\\x00-\\x1f]|…| |
|
";

  // Mapping arrays for escaping a double quoted string. The backslash is
  // first to ensure proper escaping because str_replace operates iteratively
  // on the input arrays. This ordering of the characters avoids the use of strtr,
  // which performs more slowly.
  private static $escapees = array(
    '\\\\',
    '\\"',
    "\0",
    "\1",
    "\2",
    "\3",
    "\4",
    "\5",
    "\6",
    "\7",
    "\10",
    "\t",
    "\n",
    "\v",
    "\f",
    "\r",
    "\16",
    "\17",
    "\20",
    "\21",
    "\22",
    "\23",
    "\24",
    "\25",
    "\26",
    "\27",
    "\30",
    "\31",
    "\32",
    "\33",
    "\34",
    "\35",
    "\36",
    "\37",
    "…",
    " ",
    "
",
    "
",
  );
  private static $escaped = array(
    '\\"',
    '\\\\',
    "\\0",
    "\\x01",
    "\\x02",
    "\\x03",
    "\\x04",
    "\\x05",
    "\\x06",
    "\\a",
    "\\b",
    "\\t",
    "\\n",
    "\\v",
    "\\f",
    "\\r",
    "\\x0e",
    "\\x0f",
    "\\x10",
    "\\x11",
    "\\x12",
    "\\x13",
    "\\x14",
    "\\x15",
    "\\x16",
    "\\x17",
    "\\x18",
    "\\x19",
    "\\x1a",
    "\\e",
    "\\x1c",
    "\\x1d",
    "\\x1e",
    "\\x1f",
    "\\N",
    "\\_",
    "\\L",
    "\\P",
  );

  /**
   * Determines if a PHP value would require double quoting in YAML.
   *
   * @param string $value A PHP value
   *
   * @return Boolean True if the value would require double quotes.
   */
  public static function requiresDoubleQuoting($value) {
    return preg_match('/' . self::REGEX_CHARACTER_TO_ESCAPE . '/u', $value);
  }

  /**
   * Escapes and surrounds a PHP value with double quotes.
   *
   * @param string $value A PHP value
   *
   * @return string The quoted, escaped string
   */
  public static function escapeWithDoubleQuotes($value) {
    return sprintf('"%s"', str_replace(self::$escapees, self::$escaped, $value));
  }

  /**
   * Determines if a PHP value would require single quoting in YAML.
   *
   * @param string $value A PHP value
   *
   * @return Boolean True if the value would require single quotes.
   */
  public static function requiresSingleQuoting($value) {
    return preg_match('/[ \\s \' " \\: \\{ \\} \\[ \\] , & \\* \\# \\?] | \\A[ - ? | < > = ! % @ ` ]/x', $value);
  }

  /**
   * Escapes and surrounds a PHP value with single quotes.
   *
   * @param string $value A PHP value
   *
   * @return string The quoted, escaped string
   */
  public static function escapeWithSingleQuotes($value) {
    return sprintf("'%s'", str_replace('\'', '\'\'', $value));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Escaper::$escaped private static property
Escaper::$escapees private static property
Escaper::escapeWithDoubleQuotes public static function Escapes and surrounds a PHP value with double quotes.
Escaper::escapeWithSingleQuotes public static function Escapes and surrounds a PHP value with single quotes.
Escaper::REGEX_CHARACTER_TO_ESCAPE constant
Escaper::requiresDoubleQuoting public static function Determines if a PHP value would require double quoting in YAML.
Escaper::requiresSingleQuoting public static function Determines if a PHP value would require single quoting in YAML.