<?php

namespace SilverStripe\View;

use Exception;

/**
 * This is the exception raised when failing to parse a template. Note that we don't currently do any static analysis,
 * so we can't know if the template will run, just if it's malformed. It also won't catch mistakes that still look
 * valid.
 */
class SSTemplateParseException extends Exception
{

	/**
	 * SSTemplateParseException constructor.
	 * @param string $message
	 * @param SSTemplateParser $parser
	 */
	public function __construct($message, $parser)
	{
		$prior = substr($parser->string, 0, $parser->pos);

		preg_match_all('/\r\n|\r|\n/', $prior, $matches);
		$line = count($matches[0]) + 1;

		parent::__construct("Parse error in template on line $line. Error was: $message");
	}

}