From 7c1ad0797c8e37cdf0530f73181c6d9fdadd67a8 Mon Sep 17 00:00:00 2001 From: Alan Date: Thu, 3 Mar 2022 17:09:21 +0800 Subject: [PATCH] Fix #7134 - parsing optional cfg --- roojspacker/DocTag.vala | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/roojspacker/DocTag.vala b/roojspacker/DocTag.vala index df050d7..e250b42 100644 --- a/roojspacker/DocTag.vala +++ b/roojspacker/DocTag.vala @@ -125,7 +125,7 @@ namespace JSDOC if ( this.title == DocTagTitle.PARAM || this.title == DocTagTitle.PROPERTY || - this.title == DocTagTitle.CFG) { // @config is deprecated + this.title == DocTagTitle.CFG) { // @config is deprecated << not really? src = this.nibbleName(src); } } @@ -139,27 +139,38 @@ namespace JSDOC // if type == @cfg, and matches (|....|...) src = src.strip(); + + // our code uses (Optional) - but we really want to ignore this. + src = /\(Optional\)/.replace(src, src.length, 0, "").strip(); + MatchInfo mi = null; + + if (this.title == DocTagTitle.CFG && /^\([^)]+\)/.match_all(src, 0, out mi )) { var ms = mi.fetch(0); GLib.debug("Got Opt list: %s", ms); ms = ms.substring(1,ms.length-2); + GLib.debug("clan to: %s", ms); if (ms.contains("|")) { var ar = ms.split("|"); + GLib.debug("split to: %d", ar.length); for (var i =0 ; i < ar.length;i++) { - optvalues.add(ar[i].strip()); + GLib.debug("Add optvalue: %s",ar[i].strip()); + this.optvalues.add(ar[i].strip()); } - src = src.substring(ms.length, src.length - ms.length); - + src = src.substring(ms.length, src.length - (ms.length+2)).strip(); + GLib.debug("SRC NOW: %s",src); } } - - + if (this.title == DocTagTitle.CFG && /\[required\]/.match(src)) { + this.isOptional = false; + src = /\[required\]/.replace(src, src.length, 0, "").strip(); + } this.desc = src; // whatever is left // example tags need to have whitespace preserved @@ -333,6 +344,13 @@ namespace JSDOC add.set_string_member("type",this.type); add.set_string_member("desc",this.desc); add.set_string_member("memberOf", this.memberOf == parent.alias ? "" : this.memberOf); + add.set_boolean_member("isOptional", this.isOptional); + var ar = new Json.Array(); + foreach(var ov in this.optvalues) { + ar.add_string_element(ov); + } + add.set_array_member("optvalues", ar); + return add; } -- 2.39.2