commit
4acf391519
|
@ -61,8 +61,8 @@ abstract class VcsDownloader implements DownloaderInterface
|
||||||
throw new \InvalidArgumentException('The given package is missing reference information');
|
throw new \InvalidArgumentException('The given package is missing reference information');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->io->write(" - Package <info>" . $target->getName() . "</info> (<comment>" . $target->getPrettyVersion() . "</comment>)");
|
||||||
$this->enforceCleanDirectory($path);
|
$this->enforceCleanDirectory($path);
|
||||||
$this->io->write(" - Package <info>" . $package->getName() . "</info> (<comment>" . $package->getPrettyVersion() . "</comment>)");
|
|
||||||
$this->doUpdate($initial, $target, $path);
|
$this->doUpdate($initial, $target, $path);
|
||||||
$this->io->write('');
|
$this->io->write('');
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ class JsonFile
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_put_contents($this->path, $this->encode($hash, $prettyPrint));
|
file_put_contents($this->path, static::encode($hash, $prettyPrint));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -105,7 +105,7 @@ class JsonFile
|
||||||
* @param Boolean $prettyPrint If true, output is pretty-printed
|
* @param Boolean $prettyPrint If true, output is pretty-printed
|
||||||
* @return string Indented version of the original JSON string
|
* @return string Indented version of the original JSON string
|
||||||
*/
|
*/
|
||||||
public function encode(array $hash, $prettyPrint = true)
|
static public function encode(array $hash, $prettyPrint = true)
|
||||||
{
|
{
|
||||||
if ($prettyPrint && defined('JSON_PRETTY_PRINT')) {
|
if ($prettyPrint && defined('JSON_PRETTY_PRINT')) {
|
||||||
return json_encode($hash, JSON_PRETTY_PRINT);
|
return json_encode($hash, JSON_PRETTY_PRINT);
|
||||||
|
@ -181,7 +181,7 @@ class JsonFile
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public static function parseJson($json)
|
static public function parseJson($json)
|
||||||
{
|
{
|
||||||
$data = json_decode($json, true);
|
$data = json_decode($json, true);
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ class JsonFile
|
||||||
$msg .= ', extra comma';
|
$msg .= ', extra comma';
|
||||||
} elseif (preg_match('#((?<=[^\\\\])\\\\(?!["\\\\/bfnrt]|u[a-f0-9]{4}))#i', $json, $match, PREG_OFFSET_CAPTURE)) {
|
} elseif (preg_match('#((?<=[^\\\\])\\\\(?!["\\\\/bfnrt]|u[a-f0-9]{4}))#i', $json, $match, PREG_OFFSET_CAPTURE)) {
|
||||||
$msg .= ', unescaped backslash (\\)';
|
$msg .= ', unescaped backslash (\\)';
|
||||||
} elseif (preg_match('#(["}\]]) *\r?\n *"#', $json, $match, PREG_OFFSET_CAPTURE)) {
|
} elseif (preg_match('#(["}\]])(?: *\r?\n *)+"#', $json, $match, PREG_OFFSET_CAPTURE)) {
|
||||||
$msg .= ', missing comma';
|
$msg .= ', missing comma';
|
||||||
$charOffset = 1;
|
$charOffset = 1;
|
||||||
} elseif (preg_match('#^ *([a-z0-9_-]+) *:#mi', $json, $match, PREG_OFFSET_CAPTURE)) {
|
} elseif (preg_match('#^ *([a-z0-9_-]+) *:#mi', $json, $match, PREG_OFFSET_CAPTURE)) {
|
||||||
|
@ -215,6 +215,8 @@ class JsonFile
|
||||||
$msg .= ', use double quotes (") instead of single quotes (\')';
|
$msg .= ', use double quotes (") instead of single quotes (\')';
|
||||||
} elseif (preg_match('#(\[".*?":.*?\])#', $json, $match, PREG_OFFSET_CAPTURE)) {
|
} elseif (preg_match('#(\[".*?":.*?\])#', $json, $match, PREG_OFFSET_CAPTURE)) {
|
||||||
$msg .= ', you must use the hash syntax (e.g. {"foo": "bar"}) instead of array syntax (e.g. ["foo", "bar"])';
|
$msg .= ', you must use the hash syntax (e.g. {"foo": "bar"}) instead of array syntax (e.g. ["foo", "bar"])';
|
||||||
|
} elseif (preg_match('#".*?"( *["{\[])#', $json, $match, PREG_OFFSET_CAPTURE)) {
|
||||||
|
$msg .= ', missing colon';
|
||||||
}
|
}
|
||||||
if (isset($match[1][1])) {
|
if (isset($match[1][1])) {
|
||||||
$preError = substr($json, 0, $match[1][1]);
|
$preError = substr($json, 0, $match[1][1]);
|
||||||
|
|
|
@ -84,6 +84,25 @@ class JsonFileTest extends \PHPUnit_Framework_TestCase
|
||||||
$this->expectParseException('missing comma on line 2, char 21', $json);
|
$this->expectParseException('missing comma on line 2, char 21', $json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testParseErrorDetectMissingCommaMultiline()
|
||||||
|
{
|
||||||
|
$json = '{
|
||||||
|
"foo": "barbar"
|
||||||
|
|
||||||
|
"bar": "foo"
|
||||||
|
}';
|
||||||
|
$this->expectParseException('missing comma on line 2, char 24', $json);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testParseErrorDetectMissingColon()
|
||||||
|
{
|
||||||
|
$json = '{
|
||||||
|
"foo": "bar",
|
||||||
|
"bar" "foo"
|
||||||
|
}';
|
||||||
|
$this->expectParseException('missing colon on line 3, char 14', $json);
|
||||||
|
}
|
||||||
|
|
||||||
public function testSimpleJsonString()
|
public function testSimpleJsonString()
|
||||||
{
|
{
|
||||||
$data = array('name' => 'composer/composer');
|
$data = array('name' => 'composer/composer');
|
||||||
|
|
Loading…
Reference in New Issue