From e53fde402b47786e5a9d1c75b2c271ce6514db6b Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Wed, 9 Apr 2014 10:26:39 -0600 Subject: [PATCH] Write out sorted symbols, excluding inherited ones on private classes There are cases where a private class may inherit an exportable member (e.g. ol.DebugTile_#getTileCoord comes from ol.Tile#getTileCoord). We want to avoid making these exportable. --- buildcfg/jsdoc/symbols/publish.js | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/buildcfg/jsdoc/symbols/publish.js b/buildcfg/jsdoc/symbols/publish.js index 005204652f..b28dd70150 100644 --- a/buildcfg/jsdoc/symbols/publish.js +++ b/buildcfg/jsdoc/symbols/publish.js @@ -1,6 +1,7 @@ /** * @fileoverview Generates JSON output based on doclets with the "api" tag. */ +var assert = require('assert'); var fs = require('fs'); var path = require('path'); @@ -16,20 +17,25 @@ exports.publish = function(data, opts) { // get all doclets with the "api" property. var docs = data({api: {isString: true}}).get(); - process.stdout.write('{"symbols": ['); - - // stream JSON for each doclet - docs.forEach(function(doc, i) { - var metadata = { + // get sorted symbols, filter out those that are members of private classes + var symbols = docs.filter(function(doc) { + var include = true; + var constructor = doc.memberof; + if (constructor && constructor.substr(-1) === '_') { + assert.strictEqual(doc.inherited, true, + 'Unexpected export on private class: ' + doc.longname); + include = false; + } + return include; + }).map(function(doc) { + return { name: doc.longname, - extends: doc.augments || [], - package: doc.api, path: path.join(doc.meta.path, doc.meta.filename) }; - var sep = i > 0 ? ',' : ''; - process.stdout.write(sep + JSON.stringify(metadata)); + }).sort(function(a, b) { + return a.name < b.name ? -1 : 1; }); - process.stdout.write(']}\n'); + process.stdout.write(JSON.stringify({symbols: symbols}, null, 2)); };