@samchon/openapi
Version:
OpenAPI definitions and converters for 'typia' and 'nestia'.
1 lines • 7.07 kB
Source Map (JSON)
{"version":3,"file":"NamingConvention.mjs","sources":["../../src/utils/NamingConvention.ts"],"sourcesContent":["export namespace NamingConvention {\n export function snake(str: string): string {\n const indexes: number[] = [];\n for (let i: number = 0; i < str.length; i++) {\n const code: number = str.charCodeAt(i);\n if (65 <= code && code <= 90) indexes.push(i);\n }\n for (let i: number = indexes.length - 1; i > 0; --i) {\n const now: number = indexes[i]!;\n const prev: number = indexes[i - 1]!;\n if (now - prev === 1) indexes.splice(i, 1);\n }\n if (indexes.length !== 0 && indexes[0] === 0) indexes.splice(0, 1);\n if (indexes.length === 0) return str.toLowerCase();\n\n let ret: string = \"\";\n for (let i: number = 0; i < indexes.length; i++) {\n const first: number = i === 0 ? 0 : indexes[i - 1]!;\n const last: number = indexes[i]!;\n\n ret += str.substring(first, last).toLowerCase();\n ret += \"_\";\n }\n ret += str.substring(indexes[indexes.length - 1]!).toLowerCase();\n return ret;\n }\n\n export function camel(str: string): string {\n return unsnake((str: string) => {\n if (str.length === 0) return str;\n else if (str[0] === str[0]!.toUpperCase())\n return str[0]!.toLowerCase() + str.substring(1);\n else return str;\n })(str);\n }\n\n export function pascal(str: string): string {\n return unsnake((str: string) => {\n if (str.length === 0) return str;\n else if (str[0] === str[0]!.toLowerCase())\n return str[0]!.toUpperCase() + str.substring(1);\n else return str;\n })(str);\n }\n\n const unsnake =\n (escaper: (str: string) => string) =>\n (str: string): string => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let prefix: string = \"\";\n for (let i: number = 0; i < str.length; i++) {\n if (str[i] === \"_\") prefix += \"_\";\n else break;\n }\n if (prefix.length !== 0) str = str.substring(prefix.length);\n\n const indexes: [number, number][] = [];\n for (let i: number = 0; i < str.length; i++) {\n const ch: string = str[i]!;\n if (ch !== \"_\") continue;\n\n const last = indexes[indexes.length - 1];\n if (last === undefined || last[0] + last[1] !== i) indexes.push([i, 1]);\n else ++last[1];\n }\n if (indexes.length === 0) return prefix + escaper(str);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let ret: string = \"\";\n for (let i: number = 0; i < indexes.length; i++) {\n const [first] = indexes[i]!;\n if (i === 0)\n if (first === 0) ret += \"_\";\n else ret += str.substring(0, first);\n else {\n const [prevFirst, prevLength] = indexes[i - 1]!;\n const piece: string = str.substring(prevFirst + prevLength, first);\n if (piece.length) ret += capitalize(piece);\n }\n }\n const last = indexes[indexes.length - 1]!;\n const piece: string = str.substring(last[0] + last[1]);\n if (last.length) ret += capitalize(piece);\n return prefix + escaper(ret);\n };\n\n export const capitalize = (str: string): string =>\n str.length !== 0 ? str[0].toUpperCase() + str.slice(1).toLowerCase() : str;\n\n export const variable = (str: string): boolean =>\n reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str);\n\n export const reserved = (str: string): boolean => RESERVED.has(str);\n}\n\nconst RESERVED: Set<string> = new Set([\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"enum\",\n \"export\",\n \"extends\",\n \"false\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"module\",\n \"new\",\n \"null\",\n \"package\",\n \"public\",\n \"private\",\n \"protected\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n]);\n"],"names":["NamingConvention","snake","str","indexes","i","length","code","charCodeAt","push","now","prev","splice","toLowerCase","ret","first","last","substring","camel","unsnake","toUpperCase","pascal","escaper","prefix","ch","undefined","prevFirst","prevLength","piece","capitalize","slice","variable","reserved","test","RESERVED","has","Set"],"mappings":"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"}