summaryrefslogtreecommitdiff
path: root/vala/valamarkupreader.vala
diff options
context:
space:
mode:
authorFlorian Brosch <flo.brosch@gmail.com>2010-08-08 03:37:15 +0200
committerJürg Billeter <j@bitron.ch>2010-08-09 10:07:52 +0200
commit508e36dc7b3c2078187bf1bd1c3bdf843bd6a7b6 (patch)
tree7590ff9728339e965d65530c586ea485095b2dce /vala/valamarkupreader.vala
parentead11099766f535d31c63495f4ea4a8d4442e47f (diff)
downloadvala-508e36dc7b3c2078187bf1bd1c3bdf843bd6a7b6.tar.gz
Fix line and column counter in markup reader
Diffstat (limited to 'vala/valamarkupreader.vala')
-rw-r--r--vala/valamarkupreader.vala19
1 files changed, 15 insertions, 4 deletions
diff --git a/vala/valamarkupreader.vala b/vala/valamarkupreader.vala
index 097700cf3..7805e256e 100644
--- a/vala/valamarkupreader.vala
+++ b/vala/valamarkupreader.vala
@@ -68,8 +68,8 @@ public class Vala.MarkupReader : Object {
string read_name () {
char* begin = current;
while (current < end) {
- if (current[0] == ' ' || current[0] == '>'
- || current[0] == '/' || current[0] == '=') {
+ if (current[0] == ' ' || current[0] == '\t' || current[0] == '>'
+ || current[0] == '/' || current[0] == '=' || current[0] == '\n') {
break;
}
unichar u = ((string) current).get_char_validated ((long) (end - current));
@@ -120,6 +120,9 @@ public class Vala.MarkupReader : Object {
// end of comment
current += 3;
break;
+ } else if (current[0] == '\n') {
+ line++;
+ column = 0;
}
current++;
}
@@ -186,8 +189,6 @@ public class Vala.MarkupReader : Object {
type = MarkupTokenType.TEXT;
}
- column += (int) (current - begin);
-
token_end.pos = current;
token_end.line = line;
token_end.column = column - 1;
@@ -198,6 +199,7 @@ public class Vala.MarkupReader : Object {
string text (char end_char) {
StringBuilder content = new StringBuilder ();
char* text_begin = current;
+ char* last_linebreak = current;
while (current < end && current[0] != end_char) {
unichar u = ((string) current).get_char_validated ((long) (end - current));
@@ -234,7 +236,14 @@ public class Vala.MarkupReader : Object {
current += u.to_utf8 (null);
}
} else {
+ if (u == '\n') {
+ line++;
+ column = 0;
+ last_linebreak = current;
+ }
+
current += u.to_utf8 (null);
+ column++;
}
}
@@ -242,6 +251,8 @@ public class Vala.MarkupReader : Object {
content.append (((string) text_begin).ndup (current - text_begin));
}
+ column += (int) (current - last_linebreak);
+
return content.str;
}