-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
57ba103
commit 323519c
Showing
59 changed files
with
2,632 additions
and
279 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
<?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 Drush\Internal\Config\Yaml; | ||
|
||
/** | ||
* Escaper encapsulates escaping rules for single and double-quoted | ||
* YAML strings. | ||
* | ||
* @author Matthew Lewinski <matthew@lewinski.org> | ||
* | ||
* @internal | ||
*/ | ||
class Escaper | ||
{ | ||
// Characters that would cause a dumped string to require double quoting. | ||
const REGEX_CHARACTER_TO_ESCAPE = "[\\x00-\\x1f]|\xc2\x85|\xc2\xa0|\xe2\x80\xa8|\xe2\x80\xa9"; | ||
|
||
// 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('\\', '\\\\', '\\"', '"', | ||
"\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", | ||
"\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", | ||
"\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", | ||
"\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", | ||
"\xc2\x85", "\xc2\xa0", "\xe2\x80\xa8", "\xe2\x80\xa9", | ||
); | ||
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 bool True if the value would require double quotes | ||
*/ | ||
public static function requiresDoubleQuoting($value) | ||
{ | ||
return 0 < 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 bool True if the value would require single quotes | ||
*/ | ||
public static function requiresSingleQuoting($value) | ||
{ | ||
// Determines if a PHP value is entirely composed of a value that would | ||
// require single quoting in YAML. | ||
if (in_array(strtolower($value), array('null', '~', 'true', 'false', 'y', 'n', 'yes', 'no', 'on', 'off'))) { | ||
return true; | ||
} | ||
|
||
// Determines if the PHP value contains any single characters that would | ||
// cause it to require single quoting in YAML. | ||
return 0 < 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)); | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
internal-copy/Config/Yaml/Exception/ExceptionInterface.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?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 Drush\Internal\Config\Yaml\Exception; | ||
|
||
/** | ||
* Exception interface for all exceptions thrown by the component. | ||
* | ||
* @author Fabien Potencier <fabien@symfony.com> | ||
*/ | ||
interface ExceptionInterface | ||
{ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
<?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 Drush\Internal\Config\Yaml\Exception; | ||
|
||
/** | ||
* Exception class thrown when an error occurs during parsing. | ||
* | ||
* @author Fabien Potencier <fabien@symfony.com> | ||
*/ | ||
class ParseException extends RuntimeException | ||
{ | ||
private $parsedFile; | ||
private $parsedLine; | ||
private $snippet; | ||
private $rawMessage; | ||
|
||
/** | ||
* @param string $message The error message | ||
* @param int $parsedLine The line where the error occurred | ||
* @param string|null $snippet The snippet of code near the problem | ||
* @param string|null $parsedFile The file name where the error occurred | ||
* @param \Exception|null $previous The previous exception | ||
*/ | ||
public function __construct($message, $parsedLine = -1, $snippet = null, $parsedFile = null, \Exception $previous = null) | ||
{ | ||
$this->parsedFile = $parsedFile; | ||
$this->parsedLine = $parsedLine; | ||
$this->snippet = $snippet; | ||
$this->rawMessage = $message; | ||
|
||
$this->updateRepr(); | ||
|
||
parent::__construct($this->message, 0, $previous); | ||
} | ||
|
||
/** | ||
* Gets the snippet of code near the error. | ||
* | ||
* @return string The snippet of code | ||
*/ | ||
public function getSnippet() | ||
{ | ||
return $this->snippet; | ||
} | ||
|
||
/** | ||
* Sets the snippet of code near the error. | ||
* | ||
* @param string $snippet The code snippet | ||
*/ | ||
public function setSnippet($snippet) | ||
{ | ||
$this->snippet = $snippet; | ||
|
||
$this->updateRepr(); | ||
} | ||
|
||
/** | ||
* Gets the filename where the error occurred. | ||
* | ||
* This method returns null if a string is parsed. | ||
* | ||
* @return string The filename | ||
*/ | ||
public function getParsedFile() | ||
{ | ||
return $this->parsedFile; | ||
} | ||
|
||
/** | ||
* Sets the filename where the error occurred. | ||
* | ||
* @param string $parsedFile The filename | ||
*/ | ||
public function setParsedFile($parsedFile) | ||
{ | ||
$this->parsedFile = $parsedFile; | ||
|
||
$this->updateRepr(); | ||
} | ||
|
||
/** | ||
* Gets the line where the error occurred. | ||
* | ||
* @return int The file line | ||
*/ | ||
public function getParsedLine() | ||
{ | ||
return $this->parsedLine; | ||
} | ||
|
||
/** | ||
* Sets the line where the error occurred. | ||
* | ||
* @param int $parsedLine The file line | ||
*/ | ||
public function setParsedLine($parsedLine) | ||
{ | ||
$this->parsedLine = $parsedLine; | ||
|
||
$this->updateRepr(); | ||
} | ||
|
||
private function updateRepr() | ||
{ | ||
$this->message = $this->rawMessage; | ||
|
||
$dot = false; | ||
if ('.' === substr($this->message, -1)) { | ||
$this->message = substr($this->message, 0, -1); | ||
$dot = true; | ||
} | ||
|
||
if (null !== $this->parsedFile) { | ||
$this->message .= sprintf(' in %s', json_encode($this->parsedFile, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)); | ||
} | ||
|
||
if ($this->parsedLine >= 0) { | ||
$this->message .= sprintf(' at line %d', $this->parsedLine); | ||
} | ||
|
||
if ($this->snippet) { | ||
$this->message .= sprintf(' (near "%s")', $this->snippet); | ||
} | ||
|
||
if ($dot) { | ||
$this->message .= '.'; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?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 Drush\Internal\Config\Yaml\Exception; | ||
|
||
/** | ||
* Exception class thrown when an error occurs during parsing. | ||
* | ||
* @author Romain Neutron <imprec@gmail.com> | ||
*/ | ||
class RuntimeException extends \RuntimeException implements ExceptionInterface | ||
{ | ||
} |
Oops, something went wrong.