UNPKG

@alova/wormhole

Version:

More modern openAPI generating solution for alova.js

38 lines (37 loc) 1.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toCase = toCase; /** * Transform output filename by the given transformer without changing template filename. * Only the part before the first dot is transformed (e.g. transform `globals` in `globals.d`). */ function toCase(name, transformer) { if (!transformer) { return name; } if (typeof transformer === 'function') { return transformer(name); } const [head, ...rest] = name.split('.'); const words = head .replace(/([a-z0-9])([A-Z])/g, '$1 $2') .replace(/[^a-z0-9]+/gi, ' ') .trim() .split(/\s+/) .map(w => w.toLowerCase()); switch (transformer) { case 'camelCase': return [ words.map((w, i) => (i === 0 ? w : w.charAt(0).toUpperCase() + w.slice(1))).join(''), ...rest, ].join('.'); case 'pascalCase': return [words.map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(''), ...rest].join('.'); case 'kebabCase': return [words.join('-'), ...rest].join('.'); case 'snakeCase': return [words.join('_'), ...rest].join('.'); default: return name; } }