From a8209df20dc356a980f042887d54f5177b0038b6 Mon Sep 17 00:00:00 2001 From: Alan Knowles Date: Tue, 27 Jul 2021 11:55:08 +0800 Subject: [PATCH] Fix #6894 - debugging generator --- roojspacker/DocBuilder.vala | 47 ++++++++++++++++++ roojspacker/DocComment.vala | 17 ++++++- roojspacker/DocTag.vala | 19 +++++++- roojspacker/PackerRun.vala | 15 +++++- roojspacker/Symbol.vala | 97 +++++++++++++++++++++++++++++++++++-- roojspacker/SymbolSet.vala | 11 +++++ 6 files changed, 198 insertions(+), 8 deletions(-) diff --git a/roojspacker/DocBuilder.vala b/roojspacker/DocBuilder.vala index eb31e26..76b71ce 100644 --- a/roojspacker/DocBuilder.vala +++ b/roojspacker/DocBuilder.vala @@ -34,6 +34,53 @@ namespace JSDOC // this currently uses the concept of publish.js... + if (PackerRun.singleton().opt_doc_dump_tree) { + + + var symbols = this.symbolSet.values(); + + + + + //print(JSON.stringify(symbols,null,4)); + var classes = new Gee.ArrayList(); + + foreach(var symbol in symbols) { + if (symbol.isaClass()) { + classes.add(symbol); + } + } + classes.sort( (a,b) => { + return a.alias.collate(b.alias); + }); + + var jsonAll = new Json.Object(); + for (var i = 0, l = classes.size; i < l; i++) { + var symbol = classes.get(i); + + jsonAll.set_object_member(symbol.alias, this.publishJSON(symbol)); + + } + + var generator = new Json.Generator (); + var root = new Json.Node(Json.NodeType.OBJECT); + + root.init_object(jsonAll); + generator.set_root (root); + generator.pretty= true; + generator.indent = 2; + + size_t l; + stdout.printf("%s\n",generator.to_data(out l)); + + return; + } + size_t l; + //GLib.debug("JSON: %s", generator.to_data(out l)); + + + + this.publish(); diff --git a/roojspacker/DocComment.vala b/roojspacker/DocComment.vala index e89ae76..9a05d9e 100644 --- a/roojspacker/DocComment.vala +++ b/roojspacker/DocComment.vala @@ -193,7 +193,22 @@ namespace JSDOC } } return string.joinv("\n", ret); - } + } + + public Json.Object toJson() + { + var ret = new Json.Object(); + ret.set_string_member("src", this.src); + var ar = new Json.Array(); + foreach(var a in this.tags) { + ar.add_object_element(a.toJson()); + } + ret.set_array_member("tags", ar); + ret.set_boolean_member("isUserComment", this.isUserComment); + ret.set_boolean_member("hasTags", this.hasTags); + return ret; + } + } } diff --git a/roojspacker/DocTag.vala b/roojspacker/DocTag.vala index e68e742..4074807 100644 --- a/roojspacker/DocTag.vala +++ b/roojspacker/DocTag.vala @@ -77,8 +77,23 @@ namespace JSDOC ); } - - + public Json.Object toJson() + { + var ret = new Json.Object(); + ret.set_string_member("title", this.title.to_string()); + ret.set_string_member("type", this.type); + ret.set_string_member("name", this.name); + ret.set_string_member("defaultValue", this.defaultValue); + ret.set_string_member("desc", this.desc); + ret.set_string_member("memberOf", this.memberOf); + ret.set_boolean_member("isOptional", this.isOptional); + var ar = new Json.Array(); + foreach(var ov in this.optvalues) { + ar.add_string_element(ov); + } + ret.set_array_member("optvalues", ar); + return ret; + } public DocTag (string in_src) diff --git a/roojspacker/PackerRun.vala b/roojspacker/PackerRun.vala index 1ff926f..9445994 100644 --- a/roojspacker/PackerRun.vala +++ b/roojspacker/PackerRun.vala @@ -44,12 +44,13 @@ namespace JSDOC public string opt_doc_target = null; public string opt_doc_template_dir = null; public bool opt_doc_include_private = false; + public bool opt_doc_dump_tree = false; [CCode (array_length = false, array_null_terminated = true)] private string[]? opt_files = null; [CCode (array_length = false, array_null_terminated = true)] private string[]? opt_files_from = null; - + public bool opt_debug = false; @@ -235,7 +236,7 @@ namespace JSDOC flags = 0, arg = OptionArg.STRING, arg_data = &opt_doc_target, - description = "Target location for documetnation", + description = "Target location for documentation", arg_description = null }, @@ -250,6 +251,16 @@ namespace JSDOC }, + OptionEntry() { + long_name = "doc-dump-tree", + short_name = 'E', + flags = 0, + arg = OptionArg.NONE, + arg_data = &opt_doc_dump_tree, + description = "Dump the documenation json tree", + arg_description = null + }, + OptionEntry() { long_name = "doc-private", short_name = 'P', diff --git a/roojspacker/Symbol.vala b/roojspacker/Symbol.vala index 216f512..2422900 100644 --- a/roojspacker/Symbol.vala +++ b/roojspacker/Symbol.vala @@ -41,8 +41,7 @@ namespace JSDOC { } - string defaultValue = ""; - + string defaultValue = ""; private Gee.ArrayList private_doctag_params = null; private Gee.ArrayList private_params{ @@ -105,7 +104,7 @@ namespace JSDOC { public DocComment comment; //$args : [], // original arguments used when constructing. - string addOn = ""; + //string addOn = ""; public string alias = ""; string author = ""; @@ -885,6 +884,98 @@ namespace JSDOC { return ret; } + public Json.Array stringArrayToJson( Gee.ArrayList ar) + { + var ret = new Json.Array(); + foreach(var a in ar) { + ret.add_string_element(a); + } + return ret; + + } + public Json.Array symbolArrayToJson( Gee.ArrayList ar) + { + var ret = new Json.Array(); + foreach(var a in ar) { + ret.add_object_element(a.toJson()); + } + return ret; + + } + public Json.Array docTagsArrayToJson( Gee.ArrayList ar) + { + var ret = new Json.Array(); + foreach(var a in ar) { + ret.add_object_element(a.toJson()); + } + return ret; + + } + + + + public Json.Object assocDocTagToJson( Gee.HashMap ar) + { + var ret = new Json.Object(); + foreach(var a in ar.keys) { + ret.set_object_member(a, ar.get(a).toJson()); + } + return ret; + + } + + + public Json.Object toJson() + { + var ret = new Json.Object(); + ret.set_string_member("name", this.name); + ret.set_array_member("params", this.docTagsArrayToJson(this.params)); + + ret.set_array_member("augments", this.stringArrayToJson(this.augments)); + ret.set_array_member("exceptions", this.docTagsArrayToJson(this.exceptions)); + ret.set_array_member("methods", this.symbolArrayToJson(this.methods)); + ret.set_array_member("properties", this.symbolArrayToJson(this.properties)); + ret.set_array_member("requires", this.stringArrayToJson(this.requires)); + ret.set_array_member("returns", this.docTagsArrayToJson(this.returns)); + ret.set_array_member("see", this.stringArrayToJson(this.see)); + ret.set_array_member("childClasses", this.stringArrayToJson(this.childClasses)); + ret.set_array_member("inheritsFrom", this.stringArrayToJson(this.inheritsFrom)); + ret.set_object_member("cfgs", this.assocDocTagToJson(this.cfgs)); + ret.set_object_member("comment", this.comment.toJson()); + //$args : [], // original arguments used when constructing. + + ret.set_string_member("alias", this.alias); + + ret.set_string_member("author", this.author); + ret.set_string_member("classDesc" , this.classDesc); + ret.set_string_member("deprecated", this.deprecated); + ret.set_string_member("desc", this.desc); + //events : false, + ret.set_string_member("example", this.example); + + ret.set_string_member("isa", this.isa); + + ret.set_boolean_member("isEvent", this.isEvent); + ret.set_boolean_member("isConstant", this.isConstant); + ret.set_boolean_member("isIgnored", this.isIgnored); + ret.set_boolean_member("isInner", this.isInner); + ret.set_boolean_member("isNamespace", this.isNamespace); + ret.set_boolean_member("isPrivate", this.isPrivate); + ret.set_boolean_member("isStatic", this.isStatic); + + ret.set_string_member("memberOf", this.memberOf); + return ret; + } + + + + + + + + + + } diff --git a/roojspacker/SymbolSet.vala b/roojspacker/SymbolSet.vala index 3e944f5..bf82b2a 100644 --- a/roojspacker/SymbolSet.vala +++ b/roojspacker/SymbolSet.vala @@ -5,6 +5,17 @@ namespace JSDOC { private Gee.HashMap __index = null; + + public Json.Object toJson() + { + var ret = new Json.Object(); + foreach(var k in this._index.keys) { + ret.set_object_member(k, this._index.get(k).toJson()); + } + return ret; + } + + public Gee.HashMap _index { get { if (this.__index == null) { -- 2.39.2