Skip to content

Commit

Permalink
[Yaml] added specific exception classes
Browse files Browse the repository at this point in the history
  • Loading branch information
fabpot committed Feb 11, 2010
1 parent 97d6f76 commit 8e81bbb
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 14 deletions.
23 changes: 23 additions & 0 deletions src/Symfony/Components/Yaml/Exception.php
@@ -0,0 +1,23 @@
<?php

namespace Symfony\Components\Yaml;

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

/**
* Exception class used by all exceptions thrown by the component.
*
* @package symfony
* @subpackage yaml
* @author Fabien Potencier <fabien.potencier@symfony-project.com>
*/
class Exception extends \Exception
{
}
10 changes: 5 additions & 5 deletions src/Symfony/Components/Yaml/Inline.php
Expand Up @@ -63,7 +63,7 @@ static public function dump($value)
switch (true)
{
case is_resource($value):
throw new \InvalidArgumentException('Unable to dump PHP resources in a YAML file.');
throw new Exception('Unable to dump PHP resources in a YAML file.');
case is_object($value):
return '!!php/object:'.serialize($value);
case is_array($value):
Expand Down Expand Up @@ -171,7 +171,7 @@ static public function parseScalar($scalar, $delimiters = null, $stringDelimiter
}
else
{
throw new \InvalidArgumentException(sprintf('Malformed inline YAML string (%s).', $scalar));
throw new ParserException(sprintf('Malformed inline YAML string (%s).', $scalar));
}

$output = $evaluate ? self::evaluateScalar($output) : $output;
Expand All @@ -192,7 +192,7 @@ static protected function parseQuotedScalar($scalar, &$i)
{
if (!preg_match('/'.self::REGEX_QUOTED_STRING.'/A', substr($scalar, $i), $match))
{
throw new \InvalidArgumentException(sprintf('Malformed inline YAML string (%s).', substr($scalar, $i)));
throw new ParserException(sprintf('Malformed inline YAML string (%s).', substr($scalar, $i)));
}

$output = substr($match[0], 1, strlen($match[0]) - 2);
Expand Down Expand Up @@ -270,7 +270,7 @@ static protected function parseSequence($sequence, &$i = 0)
++$i;
}

throw new \InvalidArgumentException(sprintf('Malformed inline YAML string %s', $sequence));
throw new ParserException(sprintf('Malformed inline YAML string %s', $sequence));
}

/**
Expand Down Expand Up @@ -337,7 +337,7 @@ static protected function parseMapping($mapping, &$i = 0)
}
}

throw new \InvalidArgumentException(sprintf('Malformed inline YAML string %s', $mapping));
throw new ParserException(sprintf('Malformed inline YAML string %s', $mapping));
}

/**
Expand Down
16 changes: 8 additions & 8 deletions src/Symfony/Components/Yaml/Parser.php
Expand Up @@ -63,7 +63,7 @@ public function parse($value)
// tab?
if (preg_match('#^\t+#', $this->currentLine))
{
throw new \InvalidArgumentException(sprintf('A YAML file cannot contain tabs as indentation at line %d (%s).', $this->getRealCurrentLineNb() + 1, $this->currentLine));
throw new ParserException(sprintf('A YAML file cannot contain tabs as indentation at line %d (%s).', $this->getRealCurrentLineNb() + 1, $this->currentLine));
}

$isRef = $isInPlace = $isProcessed = false;
Expand Down Expand Up @@ -106,7 +106,7 @@ public function parse($value)
$isInPlace = substr($values['value'], 1);
if (!array_key_exists($isInPlace, $this->refs))
{
throw new \InvalidArgumentException(sprintf('Reference "%s" does not exist at line %s (%s).', $isInPlace, $this->getRealCurrentLineNb() + 1, $this->currentLine));
throw new ParserException(sprintf('Reference "%s" does not exist at line %s (%s).', $isInPlace, $this->getRealCurrentLineNb() + 1, $this->currentLine));
}
}
else
Expand All @@ -127,7 +127,7 @@ public function parse($value)
$merged = array();
if (!is_array($parsed))
{
throw new \InvalidArgumentException(sprintf("YAML merge keys used with a scalar value instead of an array at line %s (%s)", $this->getRealCurrentLineNb() + 1, $this->currentLine));
throw new ParserException(sprintf("YAML merge keys used with a scalar value instead of an array at line %s (%s)", $this->getRealCurrentLineNb() + 1, $this->currentLine));
}
else if (isset($parsed[0]))
{
Expand All @@ -136,7 +136,7 @@ public function parse($value)
{
if (!is_array($parsedItem))
{
throw new \InvalidArgumentException(sprintf("Merge items must be arrays at line %s (%s).", $this->getRealCurrentLineNb() + 1, $parsedItem));
throw new ParserException(sprintf("Merge items must be arrays at line %s (%s).", $this->getRealCurrentLineNb() + 1, $parsedItem));
}
$merged = array_merge($parsedItem, $merged);
}
Expand Down Expand Up @@ -233,7 +233,7 @@ public function parse($value)
$error = 'Unable to parse line';
}

throw new \InvalidArgumentException(sprintf('%s %d (%s).', $error, $this->getRealCurrentLineNb() + 1, $this->currentLine));
throw new ParserException(sprintf('%s %d (%s).', $error, $this->getRealCurrentLineNb() + 1, $this->currentLine));
}

if ($isRef)
Expand Down Expand Up @@ -278,7 +278,7 @@ protected function getNextEmbedBlock()

if (!$this->isCurrentLineEmpty() && 0 == $newIndent)
{
throw new \InvalidArgumentException(sprintf('Indentation problem at line %d (%s)', $this->getRealCurrentLineNb() + 1, $this->currentLine));
throw new ParserException(sprintf('Indentation problem at line %d (%s)', $this->getRealCurrentLineNb() + 1, $this->currentLine));
}

$data = array(substr($this->currentLine, $newIndent));
Expand Down Expand Up @@ -314,7 +314,7 @@ protected function getNextEmbedBlock()
}
else
{
throw new \InvalidArgumentException(sprintf('Indentation problem at line %d (%s)', $this->getRealCurrentLineNb() + 1, $this->currentLine));
throw new ParserException(sprintf('Indentation problem at line %d (%s)', $this->getRealCurrentLineNb() + 1, $this->currentLine));
}
}

Expand Down Expand Up @@ -366,7 +366,7 @@ protected function parseValue($value)

if (!array_key_exists($value, $this->refs))
{
throw new \InvalidArgumentException(sprintf('Reference "%s" does not exist (%s).', $value, $this->currentLine));
throw new ParserException(sprintf('Reference "%s" does not exist (%s).', $value, $this->currentLine));
}
return $this->refs[$value];
}
Expand Down
23 changes: 23 additions & 0 deletions src/Symfony/Components/Yaml/ParserException.php
@@ -0,0 +1,23 @@
<?php

namespace Symfony\Components\Yaml;

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

/**
* Exception class used by all exceptions thrown by the component.
*
* @package symfony
* @subpackage yaml
* @author Fabien Potencier <fabien.potencier@symfony-project.com>
*/
class ParserException extends Exception
{
}
3 changes: 2 additions & 1 deletion tests/unit/Symfony/Components/Yaml/ParserTest.php
Expand Up @@ -12,6 +12,7 @@

use Symfony\Components\Yaml\Yaml;
use Symfony\Components\Yaml\Parser;
use Symfony\Components\Yaml\ParserException;

Yaml::setSpecVersion('1.1');

Expand Down Expand Up @@ -64,7 +65,7 @@
$content = $parser->parse($yaml);
$t->fail('YAML files must not contain tabs');
}
catch (InvalidArgumentException $e)
catch (ParserException $e)
{
$t->pass('YAML files must not contain tabs');
}
Expand Down

0 comments on commit 8e81bbb

Please sign in to comment.