You are here

ParseException.php in Plug 7

File

lib/Symfony/yaml/Symfony/Component/Yaml/Exception/ParseException.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\Exception;


/**
 * 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) {
      if (PHP_VERSION_ID >= 50400) {
        $jsonOptions = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
      }
      else {
        $jsonOptions = 0;
      }
      $this->message .= sprintf(' in %s', json_encode($this->parsedFile, $jsonOptions));
    }
    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 .= '.';
    }
  }

}

Classes

Namesort descending Description
ParseException Exception class thrown when an error occurs during parsing.