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.
This commit is contained in:
@@ -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));
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user