mirror of
				https://github.com/hauke68/Magallanes.git
				synced 2025-11-04 09:00:18 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			150 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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_YAML
 | 
						|
 * file that was distributed with this source code.
 | 
						|
 */
 | 
						|
 | 
						|
namespace Mage\Yaml\Exception;
 | 
						|
 | 
						|
use Mage\Yaml\Exception\RuntimeException;
 | 
						|
 | 
						|
if (!defined('JSON_UNESCAPED_UNICODE')) {
 | 
						|
    define('JSON_UNESCAPED_SLASHES', 64);
 | 
						|
    define('JSON_UNESCAPED_UNICODE', 256);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Exception class thrown when an error occurs during parsing.
 | 
						|
 *
 | 
						|
 * @author Fabien Potencier <fabien@symfony.com>
 | 
						|
 *
 | 
						|
 * @api
 | 
						|
 */
 | 
						|
class ParseException extends RuntimeException
 | 
						|
{
 | 
						|
    private $parsedFile;
 | 
						|
    private $parsedLine;
 | 
						|
    private $snippet;
 | 
						|
    private $rawMessage;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Constructor.
 | 
						|
     *
 | 
						|
     * @param string    $message    The error message
 | 
						|
     * @param int       $parsedLine The line where the error occurred
 | 
						|
     * @param int       $snippet    The snippet of code near the problem
 | 
						|
     * @param string    $parsedFile The file name where the error occurred
 | 
						|
     * @param \Exception $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 .= '.';
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |