diff --git a/apidoc/plugins/olx-typedefs.js b/apidoc/plugins/olx-typedefs.js index f7b36135ac..9eb0302873 100644 --- a/apidoc/plugins/olx-typedefs.js +++ b/apidoc/plugins/olx-typedefs.js @@ -2,7 +2,26 @@ * Converts olx.js @type annotations into properties of the previous @typedef. */ -var olxTypedef = null; +var lastOlxTypedef = null; +var olxTypes = {}; + +function addSubparams(params) { + for (var j = 0, jj = params.length; j < jj; ++j) { + var param = params[j]; + var types = param.type.names; + for (var k = 0, kk = types.length; k < kk; ++k) { + var name = types[k]; + if (name in olxTypes) { + param.subparams = olxTypes[name]; + addSubparams(param.subparams); + types[k] = 'Object'; + // TODO Do we need to support multiple object literal types per + // param? + break; + } + } + } +} exports.handlers = { @@ -10,12 +29,25 @@ exports.handlers = { var doclet = e.doclet; if (doclet.meta.filename == 'olx.js') { if (doclet.kind == 'typedef') { - olxTypedef = doclet; + lastOlxTypedef = doclet; + olxTypes[doclet.longname] = []; doclet.properties = []; - } else if (olxTypedef && doclet.memberof == olxTypedef.longname) { - olxTypedef.properties.push(doclet); + } else if (lastOlxTypedef && doclet.memberof == lastOlxTypedef.longname) { + lastOlxTypedef.properties.push(doclet); + olxTypes[lastOlxTypedef.longname].push(doclet); } else { - olxTypedef = null; + lastOlxTypedef = null; + } + } + }, + + parseComplete: function(e) { + var doclets = e.doclets; + for (var i = doclets.length - 1; i >= 0; --i) { + var doclet = doclets[i]; + var params = doclet.params; + if (params) { + addSubparams(params); } } } diff --git a/src/olx.jsdoc b/src/olx.jsdoc deleted file mode 100644 index ec70071412..0000000000 --- a/src/olx.jsdoc +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @namespace olx - */ - -/** - * @namespace olx.animation - */ - -/** - * @namespace olx.control - */ - -/** - * @namespace olx.format - */ - -/** - * @namespace olx.interaction - */ - -/** - * @namespace olx.layer - */ - -/** - * @namespace olx.parser - */ - -/** - * @namespace olx.render - */ - -/** - * @namespace olx.source - */ - -/** - * @namespace olx.style - */ - -/** - * @namespace olx.tilegrid - */