UNPKG

locutus

Version:

Locutus other languages' standard libraries to JavaScript for fun and educational purposes

44 lines (43 loc) 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sql_regcase = sql_regcase; const _phpRuntimeState_ts_1 = require("../_helpers/_phpRuntimeState.js"); const setlocale_ts_1 = require("../strings/setlocale.js"); const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value); const defaultUpper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; const defaultLower = 'abcdefghijklmnopqrstuvwxyz'; function sql_regcase(str) { // discuss at: https://locutus.io/php/sql_regcase/ // original by: Brett Zamir (https://brett-zamir.me) // example 1: sql_regcase('Foo - bar.') // returns 1: '[Ff][Oo][Oo] - [Bb][Aa][Rr].' let upper = ''; let lower = ''; let pos = -1; let retStr = ''; (0, setlocale_ts_1.setlocale)('LC_ALL', 0); const lcCtypeValue = (0, _phpRuntimeState_ts_1.getPhpLocaleGroup)('LC_CTYPE', 'LC_CTYPE'); if (lcCtypeValue && isRecord(lcCtypeValue)) { const upperValue = lcCtypeValue.upper; const lowerValue = lcCtypeValue.lower; upper = typeof upperValue === 'string' ? upperValue : defaultUpper; lower = typeof lowerValue === 'string' ? lowerValue : defaultLower; } else { upper = defaultUpper; lower = defaultLower; } if (!upper || !lower) { return str; } // @todo: Make this more readable for (let i = 0; i < str.length; i++) { if ((pos = upper.indexOf(str.charAt(i))) !== -1 || (pos = lower.indexOf(str.charAt(i))) !== -1) { retStr += '[' + upper.charAt(pos) + lower.charAt(pos) + ']'; } else { retStr += str.charAt(i); } } return retStr; }