Escaper.php

Namespace

Symfony\Component\Yaml

File

drupal/core/vendor/symfony/yaml/Symfony/Component/Yaml/Escaper.php
View source
<?php

/*
 * This file is part of the Symfony package.
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace Symfony\Component\Yaml;


/**
 * Escaper encapsulates escaping rules for single and double-quoted
 * YAML strings.
 *
 * @author Matthew Lewinski <matthew@lewinski.org>
 */
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));
  }

}

Classes

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