]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Remove trailing whitespace from content in markup reader
authorFlorian Brosch <flo.brosch@gmail.com>
Sun, 8 Aug 2010 14:00:37 +0000 (16:00 +0200)
committerJürg Billeter <j@bitron.ch>
Mon, 9 Aug 2010 08:08:01 +0000 (10:08 +0200)
vala/valamarkupreader.vala

index 7805e256ed894e1792cb76d0e6ba6fd1b73aab23..843fba69ba8cce6e84549529d192183096ef2bca 100644 (file)
@@ -154,7 +154,7 @@ public class Vala.MarkupReader : Object {
                                        }
                                        current++;
 
-                                       string attr_value = text ('"');
+                                       string attr_value = text ('"', false);
 
                                        if (current >= end || current[0] != '"') {
                                                // error
@@ -179,7 +179,7 @@ public class Vala.MarkupReader : Object {
                        space ();
 
                        if (current[0] != '<') {
-                               content = text ('<');
+                               content = text ('<', true);
                        } else {
                                // no text
                                // read next token
@@ -196,7 +196,7 @@ public class Vala.MarkupReader : Object {
                return type;
        }
 
-       string text (char end_char) {
+       string text (char end_char, bool rm_trailing_whitespace) {
                StringBuilder content = new StringBuilder ();
                char* text_begin = current;
                char* last_linebreak = current;
@@ -253,6 +253,13 @@ public class Vala.MarkupReader : Object {
 
                column += (int) (current - last_linebreak);
 
+               // Removes trailing whitespace
+               if (rm_trailing_whitespace) {
+                       char* str_pos = ((char*)content.str) + content.len;
+                       for (str_pos--; str_pos > ((char*)content.str) && str_pos[0].isspace(); str_pos--);
+                       content.erase ((ssize_t) (str_pos-((char*) content.str) + 1), -1);
+               }
+
                return content.str;
        }