diff options
author | Florian Brosch <flo.brosch@gmail.com> | 2010-08-08 03:37:15 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2010-08-09 10:07:52 +0200 |
commit | 508e36dc7b3c2078187bf1bd1c3bdf843bd6a7b6 (patch) | |
tree | 7590ff9728339e965d65530c586ea485095b2dce /vala/valamarkupreader.vala | |
parent | ead11099766f535d31c63495f4ea4a8d4442e47f (diff) | |
download | vala-508e36dc7b3c2078187bf1bd1c3bdf843bd6a7b6.tar.gz |
Fix line and column counter in markup reader
Diffstat (limited to 'vala/valamarkupreader.vala')
-rw-r--r-- | vala/valamarkupreader.vala | 19 |
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; } |