summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Chabowski <kevin@kch42.de>2012-02-21 01:08:38 +0100
committerKevin Chabowski <kevin@kch42.de>2012-02-21 01:08:38 +0100
commit4bf14ccb74174e319fb370e656018a6b8bad0e0e (patch)
treee39461948d8b82e4a4096c6a6e847bd7b832ca43
parent8e35fad33de1fbecea7c29776f7afab6a4b88a48 (diff)
downloadste-4bf14ccb74174e319fb370e656018a6b8bad0e0e.tar.gz
ste-4bf14ccb74174e319fb370e656018a6b8bad0e0e.tar.bz2
ste-4bf14ccb74174e319fb370e656018a6b8bad0e0e.zip
Fixed some error message bugs.
* Very often the error offsets of parsing errors were too high. * The offset to line translation now works cleaner and should no longer throw PHP errors.
-rw-r--r--stupid_template_engine.php6
1 files changed, 3 insertions, 3 deletions
diff --git a/stupid_template_engine.php b/stupid_template_engine.php
index 48164c1..d6fe98c 100644
--- a/stupid_template_engine.php
+++ b/stupid_template_engine.php
@@ -82,7 +82,7 @@ class ParseCompileError extends \Exception
public function rewrite($code)
{
- $line = substr_count(str_replace("\r\n", "\n", $code), "\n", 0, $this->off + 1) + 1;
+ $line = substr_count(str_replace("\r\n", "\n", substr($code, 0, $this->off)), "\n") + 1;
$this->message = "{$this->msg} (Template {$this->tpl}, Line $line)";
$this->is_rewritten = True;
}
@@ -270,7 +270,7 @@ function mk_ast($code, $tpl, $err_off)
$off = 0;
$last_tag_start = 0;
- $tagstack = array(array($tag->name, $tag->offset));
+ $tagstack = array(array($tag->name, $tag->offset - $err_off));
while(preg_match("/\\<((?:\\s*)|(?:\\s*\\/\\s*))ste:([a-zA-Z0-9_]*)(?:\\s+(?:[a-zA-Z0-9_]+)=(?:(?:\"(?:.*?)(?<!\\\\)\")|(?:'(?:.*?)(?<!\\\\)')))*((?:\\s*)|(?:\\s*\\/\\s*))\\>/s", $code, $matches, PREG_OFFSET_CAPTURE, $off) > 0) /* RegEx from hell! Matches all <ste:> Tags. Opening, closing and self-closing ones. */
{
if(trim($matches[3][0]) != "/")
@@ -1317,4 +1317,4 @@ class STEStandardLibrary
}
}
-?>
+?> \ No newline at end of file