There is more work to be done, because this filters out more than desired, and we don't have events documented yet.
70 lines
1.6 KiB
JavaScript
70 lines
1.6 KiB
JavaScript
var api = [];
|
|
|
|
function collectExports(source) {
|
|
var i, ii, symbol, property;
|
|
var syms = source.match(/goog\.exportSymbol\([^\)]*\)/g);
|
|
if (syms) {
|
|
i = 0; ii = syms.length;
|
|
for (; i < ii; ++i) {
|
|
symbol = syms[i].match(/'([^']*)'/)[1];
|
|
api.push(symbol);
|
|
}
|
|
}
|
|
var props = source.match(/goog\.exportProperty\([^\)]*\)/g);
|
|
if (props) {
|
|
i = 0; ii = props.length;
|
|
for (; i < ii; ++i) {
|
|
property = props[i].match(/[^,]*,[^,]*,\r?\n? *([^\)]*)\)/)[1]
|
|
.replace('.prototype.', '#');
|
|
api.push(property);
|
|
}
|
|
}
|
|
}
|
|
|
|
var encoding = env.conf.encoding || 'utf8';
|
|
var fs = require('jsdoc/fs');
|
|
|
|
collectExports(fs.readFileSync('build/src/external/src/exports.js', encoding));
|
|
|
|
var types = fs.readFileSync('build/src/external/src/types.js', encoding);
|
|
collectExports(types);
|
|
var typedefs = types.match(/goog\.provide\('[^']*'\)/g);
|
|
var typedef, namespace;
|
|
for (var i = 0, ii = typedefs.length; i < ii; ++ i) {
|
|
typedef = typedefs[i].match(/'([^']*)'/)[1];
|
|
api.push(typedef);
|
|
namespace = typedef.substr(0, typedef.lastIndexOf('.'));
|
|
if (api.indexOf(namespace) === -1) {
|
|
api.push(namespace);
|
|
}
|
|
}
|
|
|
|
|
|
exports.handlers = {
|
|
|
|
beforeParse: function(e) {
|
|
if (/\.js$/.test(e.filename)) {
|
|
collectExports(e.source);
|
|
}
|
|
},
|
|
|
|
newDoclet: function(e) {
|
|
var fqn = e.doclet.longname;
|
|
if (fqn) {
|
|
if (api.indexOf(fqn) === -1) {
|
|
e.doclet.undocumented = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
|
|
exports.nodeVisitor = {
|
|
|
|
visitNode: function(node, e, parser, currentSourceName) {
|
|
if (e.code) {
|
|
//console.log(e.source);
|
|
}
|
|
}
|
|
}; |