UNPKG

@samchon/openapi

Version:

OpenAPI definitions and converters for 'typia' and 'nestia'.

77 lines (73 loc) 3.67 kB
var NamingConvention; (function(NamingConvention) { function snake(str) { const indexes = []; for (let i = 0; i < str.length; i++) { const code = str.charCodeAt(i); if (65 <= code && code <= 90) indexes.push(i); } for (let i = indexes.length - 1; i > 0; --i) { const now = indexes[i]; const prev = indexes[i - 1]; if (now - prev === 1) indexes.splice(i, 1); } if (indexes.length !== 0 && indexes[0] === 0) indexes.splice(0, 1); if (indexes.length === 0) return str.toLowerCase(); let ret = ""; for (let i = 0; i < indexes.length; i++) { const first = i === 0 ? 0 : indexes[i - 1]; const last = indexes[i]; ret += str.substring(first, last).toLowerCase(); ret += "_"; } ret += str.substring(indexes[indexes.length - 1]).toLowerCase(); return ret; } NamingConvention.snake = snake; function camel(str) { return unsnake((str => { if (str.length === 0) return str; else if (str[0] === str[0].toUpperCase()) return str[0].toLowerCase() + str.substring(1); else return str; }))(str); } NamingConvention.camel = camel; function pascal(str) { return unsnake((str => { if (str.length === 0) return str; else if (str[0] === str[0].toLowerCase()) return str[0].toUpperCase() + str.substring(1); else return str; }))(str); } NamingConvention.pascal = pascal; const unsnake = escaper => str => { let prefix = ""; for (let i = 0; i < str.length; i++) { if (str[i] === "_") prefix += "_"; else break; } if (prefix.length !== 0) str = str.substring(prefix.length); const indexes = []; for (let i = 0; i < str.length; i++) { const ch = str[i]; if (ch !== "_") continue; const last = indexes[indexes.length - 1]; if (last === undefined || last[0] + last[1] !== i) indexes.push([ i, 1 ]); else ++last[1]; } if (indexes.length === 0) return prefix + escaper(str); let ret = ""; for (let i = 0; i < indexes.length; i++) { const [first] = indexes[i]; if (i === 0) if (first === 0) ret += "_"; else ret += str.substring(0, first); else { const [prevFirst, prevLength] = indexes[i - 1]; const piece = str.substring(prevFirst + prevLength, first); if (piece.length) ret += NamingConvention.capitalize(piece); } } const last = indexes[indexes.length - 1]; const piece = str.substring(last[0] + last[1]); if (last.length) ret += NamingConvention.capitalize(piece); return prefix + escaper(ret); }; NamingConvention.capitalize = str => str.length !== 0 ? str[0].toUpperCase() + str.slice(1).toLowerCase() : str; NamingConvention.variable = str => NamingConvention.reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str); NamingConvention.reserved = str => RESERVED.has(str); })(NamingConvention || (NamingConvention = {})); const RESERVED = new Set([ "break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "enum", "export", "extends", "false", "finally", "for", "function", "if", "import", "in", "instanceof", "module", "new", "null", "package", "public", "private", "protected", "return", "super", "switch", "this", "throw", "true", "try", "typeof", "var", "void", "while", "with" ]); export { NamingConvention }; //# sourceMappingURL=NamingConvention.mjs.map