UNPKG

@irwinproject/storybook-addon-tsdoc

Version:
31 lines (30 loc) 1.01 kB
"use strict"; 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;