UNPKG

esxdoc

Version:

Good Documentation Generator For JavaScript

84 lines (72 loc) 2.47 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _DocBuilder = require('./DocBuilder.js'); var _DocBuilder2 = _interopRequireDefault(_DocBuilder); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Search index of identifier builder class. */ class SearchIndexBuilder extends _DocBuilder2.default { /** * execute building output. * @param {function(javascript: string, filePath: string)} callback - is called with output. */ exec(callback) { const searchIndex = []; const docs = this._find({}); for (const doc of docs) { let indexText; let url; let displayText; if (doc.importPath) { displayText = `<span>${ doc.name }</span> <span class="search-result-import-path">${ doc.importPath }</span>`; indexText = `${ doc.importPath }~${ doc.name }`.toLowerCase(); url = this._getURL(doc); } else if (doc.kind === 'testDescribe' || doc.kind === 'testIt') { displayText = doc.testFullDescription; indexText = [...(doc.testTargets || []), ...(doc._custom_test_targets || [])].join(' ').toLowerCase(); const filePath = doc.longname.split('~')[0]; const fileDoc = this._find({ kind: 'testFile', longname: filePath })[0]; url = `${ this._getURL(fileDoc) }#lineNumber${ doc.lineNumber }`; } else if (doc.kind === 'external') { displayText = doc.longname; indexText = displayText.toLowerCase(); url = doc.externalLink; } else { displayText = doc.longname; indexText = displayText.toLowerCase(); url = this._getURL(doc); } let kind = doc.kind; /* eslint-disable default-case */ switch (kind) { case 'constructor': kind = 'method'; break; case 'get': case 'set': kind = 'member'; break; case 'testDescribe': case 'testIt': kind = 'test'; break; } searchIndex.push([indexText, url, displayText, kind]); } searchIndex.sort((a, b) => { if (a[2] === b[2]) { return 0; } else if (a[2] < b[2]) { return -1; } else { return 1; } }); const javascript = `window.esdocSearchIndex = ${ JSON.stringify(searchIndex, null, 2) }`; callback(javascript, 'script/search_index.js'); } } exports.default = SearchIndexBuilder;