extra-typedoc-theme
Version:
TypeDoc theme for extra-* packages.
29 lines (25 loc) • 946 B
JavaScript
;
var typedoc = require('typedoc');
// Preserve static methods of DefaultTheme.
const getUrlDefault = typedoc.DefaultTheme.getUrl;
// Check if symbol is external.
function isExternalSymbol(reflection) {
return !reflection.sources
|| reflection.sources.length === 0
|| reflection.sources[0].fileName.startsWith("node_modules");
}
// Modify the default theme.
class ExtraTypedocTheme extends typedoc.DefaultTheme {
// Remove url suffix (function-1.html → function.html).
static getUrl(reflection, relative, separator) {
var def = getUrlDefault(reflection, relative, separator);
var mod = def.replace(/\-\d+(\.\w+)?$/, "$1");
return isExternalSymbol(reflection) ? def : mod;
}
}
// Define the theme.
function load(app) {
app.renderer.defineTheme("extra-typedoc-theme", ExtraTypedocTheme);
typedoc.DefaultTheme.getUrl = ExtraTypedocTheme.getUrl;
}
exports.load = load;