// Allows parsing of HighFidelity API tree from within JS // Len White 2015 // Defines a container for a class with member functions/variables function HFClass(name) { this.name = name; this.object = null; this.members = []; this.functions = []; this.properties = []; this.getString = function() { var buffer = this.name + "\n"; for (var i = 0; i < this.members.length; i++ ) { buffer += " " + this.members[i] + "\n"; } return buffer; }; } // Returns class array function buildApiCollection() { var HFClasses = []; classKeys = Object.keys(this); for (var i=0; i < classKeys.length; ++i) { var newClass = new HFClass(classKeys[i]); var classObj = this[newClass.name]; newClass.object = classObj; if (typeof(classObj) == "object") HFClasses.push(newClass); } for (var i=0; i < HFClasses.length; i++) { var className = HFClasses[i].name; var classObj = HFClasses[i].object; var childKeys = Object.keys(classObj); for (var j=0; j < childKeys.length; j++) { HFClasses[i].members.push(childKeys[j]); } HFClasses[i].members.sort(); } return HFClasses; } // Returns display string of API function createFormattedBuffer(classArray) { var buffer = ""; for (var i=0; i < classArray.length; i++) { buffer += classArray[i].getString(); } return buffer; } // MAIN var classes = []; classes = buildApiCollection(); classes.sort(function(a,b) { return a.name.localeCompare(b.name); } ); var buffer = createFormattedBuffer(classes); print("\n" + buffer);