@irwinproject/storybook-addon-tsdoc
Version:
Generate mdx documentation from your typescript!
31 lines (30 loc) • 1.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.combineSyntax = exports.bySyntax = void 0;
const SyntaxKindMap_1 = require("./SyntaxKindMap");
/**
* Uses a syntax kind to delegate actions to allow for automatic type based on syntax kind.
* @param node
* @param skMap
* @param defaultFN
* @returns
*/
const bySyntax = (node, skMap, defaultFN) => {
if (!node)
return defaultFN(node);
const k = node.getKind();
if (!(k in SyntaxKindMap_1.SyntaxKindDelegator)) {
return defaultFN(node);
}
//these methods force type casting
if (!SyntaxKindMap_1.SyntaxKindDelegator[k](node))
return defaultFN(node);
const entry = skMap[k];
if (!entry)
return defaultFN(node);
//@ts-ignore
return entry(node, defaultFN);
};
exports.bySyntax = bySyntax;
const combineSyntax = (keys, action) => keys.reduce((o, v) => (Object.assign(Object.assign({}, o), { [v]: action })), {});
exports.combineSyntax = combineSyntax;