From: Florian Brosch Date: Thu, 5 Jan 2012 22:26:08 +0000 (+0100) Subject: libvaladoc: gir-reader: accept @... X-Git-Tag: 0.37.1~3^2~261 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=73bb067185c2f5dd2bf1c285c68f8a8680046a76;p=thirdparty%2Fvala.git libvaladoc: gir-reader: accept @... --- diff --git a/src/libvaladoc/documentation/gtkdoccommentparser.vala b/src/libvaladoc/documentation/gtkdoccommentparser.vala index 984f56dff..b804692f0 100644 --- a/src/libvaladoc/documentation/gtkdoccommentparser.vala +++ b/src/libvaladoc/documentation/gtkdoccommentparser.vala @@ -58,20 +58,28 @@ public class Valadoc.Gtkdoc.Parser : Object, ResourceLocator { int offset = 0; while ((offset = text.content.index_of_char ('.', offset)) >= 0) { if (offset >= 2) { - // ignore e.g. + // ignore "e.g." unowned string cmp4 = ((string) (((char*) text.content) + offset - 2)); if (cmp4.has_prefix (" e.g.") || cmp4.has_prefix ("(e.g.")) { offset = offset + 3; continue; } - // ignore i.e. + // ignore "i.e." if (cmp4.has_prefix (" i.e.") || cmp4.has_prefix ("(i.e.")) { offset = offset + 3; continue; } } + unowned string cmp0 = ((string) (((char*) text.content) + offset)); + + // ignore ... (varargs) + if (cmp0.has_prefix ("...")) { + offset = offset + 3; + continue; + } + Text sec = factory.create_text (text.content.substring (offset+1, -1)); text.content = text.content.substring (0, offset+1); return sec; diff --git a/src/libvaladoc/documentation/gtkdoccommentscanner.vala b/src/libvaladoc/documentation/gtkdoccommentscanner.vala index ca03b1530..5b8793c5b 100644 --- a/src/libvaladoc/documentation/gtkdoccommentscanner.vala +++ b/src/libvaladoc/documentation/gtkdoccommentscanner.vala @@ -179,6 +179,17 @@ public class Valadoc.Gtkdoc.Scanner { return (int) ((char*) a - (char*) b); } + private inline int vararg_prefix () { + if (this.pos.has_prefix ("...")) { + next_char (); + next_char (); + next_char (); + return 3; + } + + return 0; + } + private inline int id_prefix () { if (!letter (get ())) { return 0; @@ -252,9 +263,11 @@ public class Valadoc.Gtkdoc.Scanner { int id_len = 0; if ((id_len = id_prefix ()) == 0) { - this.column = column_start; - this.pos = start; - return null; + if (type == TokenType.GTKDOC_PARAM && (id_len = vararg_prefix ()) == 0) { + this.column = column_start; + this.pos = start; + return null; + } } unowned string separator = this.pos;