UNPKG

tmdbrjs

Version:

A TypeScript wrapper for The Movie Database (TMDB) API

43 lines 1.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.camelToSnakeCase = camelToSnakeCase; exports.camelToSnakeCaseArray = camelToSnakeCaseArray; /** * Converts a camelCase string to snake_case * @param str The camelCase string to convert * @returns The snake_case version of the string */ function camelToSnakeCase(str) { // Handle empty string if (!str) return str; let result = ''; for (let i = 0; i < str.length; i++) { const char = str[i]; const prevChar = i > 0 ? str[i - 1] : ''; const nextChar = i < str.length - 1 ? str[i + 1] : ''; // Check if we need to insert an underscore if (i > 0 && /[A-Z]/.test(char)) { // Case 1: lowercase/digit followed by uppercase (camelCase -> camel_case) if (/[a-z\d]/.test(prevChar)) { result += '_'; } // Case 2: uppercase followed by uppercase+lowercase (XMLHttp -> xml_http) else if (/[A-Z]/.test(prevChar) && nextChar && /[a-z]/.test(nextChar)) { result += '_'; } } result += char.toLowerCase(); } // Remove leading underscore if present return result.replace(/^_/, ''); } /** * Converts an array of camelCase strings to snake_case * @param arr The array of camelCase strings to convert * @returns The array with all strings converted to snake_case */ function camelToSnakeCaseArray(arr) { return arr.map((item) => camelToSnakeCase(item)); } //# sourceMappingURL=caseConversion.js.map