UNPKG

typia

Version:

Superfast runtime validators with only one line

25 lines (22 loc) 775 B
export const __notationUnsnake = (props: { plain: (str: string) => string; snake: (str: string, index: number) => string; }) => (str: string): string => { // eslint-disable-next-line @typescript-eslint/no-unused-vars let prefix: string = ""; for (let i: number = 0; i < str.length; i++) { if (str[i] === "_") prefix += "_"; else break; } if (prefix.length !== 0) str = str.substring(prefix.length); const out = (s: string) => `${prefix}${s}`; if (str.length === 0) return out(""); const items: string[] = str.split("_").filter((s) => s.length !== 0); return items.length === 0 ? out("") : items.length === 1 ? out(props.plain(items[0]!)) : out(items.map(props.snake).join("")); };