<?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");
    }
}
