[valadoc] libvaladoc: gir-reader: accept π, >, <, &solidus;
- From: Florian Brosch <flobrosch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [valadoc] libvaladoc: gir-reader: accept π, >, <, &solidus;
- Date: Fri, 27 Jan 2012 16:44:42 +0000 (UTC)
commit e85e76dec1010dae4e01c859978ca2c3f02014b2
Author: Florian Brosch <flo brosch gmail com>
Date: Fri Jan 6 01:02:25 2012 +0100
libvaladoc: gir-reader: accept π, >, <, &solidus;
.../documentation/gtkdoccommentscanner.vala | 49 +++++++++++++++++++-
src/libvaladoc/markupwriter.vala | 2 +-
2 files changed, 48 insertions(+), 3 deletions(-)
---
diff --git a/src/libvaladoc/documentation/gtkdoccommentscanner.vala b/src/libvaladoc/documentation/gtkdoccommentscanner.vala
index 5b8793c..fd16e3b 100644
--- a/src/libvaladoc/documentation/gtkdoccommentscanner.vala
+++ b/src/libvaladoc/documentation/gtkdoccommentscanner.vala
@@ -134,6 +134,51 @@ public class Valadoc.Gtkdoc.Scanner {
public Scanner () {
}
+ public static string unescape (string txt) {
+ StringBuilder builder = new StringBuilder ();
+ unowned string start = txt;
+ unowned string pos;
+ unichar c;
+
+ for (pos = txt; (c = pos.get_char ()) != '\0'; pos = pos.next_char ()) {
+ if (c == '&') {
+ if (pos.has_prefix ("&solidus;")) {
+ builder.append_len (start, (ssize_t) ((char*) pos - (char*) start));
+ start = (string) ((char*) pos + 9);
+ pos = (string) ((char*) pos + 8);
+ builder.append_unichar ('â');
+ } else if (pos.has_prefix ("*")) {
+ builder.append_len (start, (ssize_t) ((char*) pos - (char*) start));
+ start = (string) ((char*) pos + 5);
+ pos = (string) ((char*) pos + 4);
+ builder.append_c ('*');
+ } else if (pos.has_prefix ("π")) {
+ builder.append_len (start, (ssize_t) ((char*) pos - (char*) start));
+ start = (string) ((char*) pos + 4);
+ pos = (string) ((char*) pos + 3);
+ builder.append_unichar ('Ï');
+ } else if (pos.has_prefix ("<")) {
+ builder.append_len (start, (ssize_t) ((char*) pos - (char*) start));
+ start = (string) ((char*) pos + 4);
+ pos = (string) ((char*) pos + 3);
+ builder.append_c ('<');
+ } else if (pos.has_prefix (">")) {
+ builder.append_len (start, (ssize_t) ((char*) pos - (char*) start));
+ start = (string) ((char*) pos + 4);
+ pos = (string) ((char*) pos + 3);
+ builder.append_c ('>');
+ }
+ }
+ }
+
+ if (&txt == &start) {
+ return txt;
+ } else {
+ builder.append_len (start, (ssize_t) ((char*) pos - (char*) start));
+ return (owned) builder.str;
+ }
+ }
+
public void reset (string content) {
this.content = content;
this.tmp_token = null;
@@ -396,7 +441,7 @@ public class Valadoc.Gtkdoc.Scanner {
next_char ();
next_char ();
next_char ();
- return new Token (TokenType.WORD, content, null, start, offset (this.pos, start), this.line, column_start, this.column);
+ return new Token (TokenType.WORD, unescape (content), null, start, offset (this.pos, start), this.line, column_start, this.column);
}
}
}
@@ -549,7 +594,7 @@ public class Valadoc.Gtkdoc.Scanner {
return null;
}
- return new Token (TokenType.WORD, start.substring (0, len), null, start, offset (this.pos, start), this.line, column_start, this.column);
+ return new Token (TokenType.WORD, unescape (start.substring (0, len)), null, start, offset (this.pos, start), this.line, column_start, this.column);
}
private Token? gtkdoc_source_open_prefix () {
diff --git a/src/libvaladoc/markupwriter.vala b/src/libvaladoc/markupwriter.vala
index 7472d02..d463d0e 100755
--- a/src/libvaladoc/markupwriter.vala
+++ b/src/libvaladoc/markupwriter.vala
@@ -38,7 +38,7 @@ public class Valadoc.MarkupWriter {
unowned string pos;
unichar c;
- for (pos = txt; (c = pos.get_char ()) != '\0' ; pos = pos.next_char ()) {
+ for (pos = txt; (c = pos.get_char ()) != '\0'; pos = pos.next_char ()) {
switch (c) {
case '"':
builder.append_len (start, (ssize_t) ((char*) pos - (char*) start));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]