UNPKG

@syncfusion/ej2-base

Version:

A common package of Essential JS 2 base libraries, methods and class definitions

367 lines (366 loc) 10 kB
/* eslint-disable @typescript-eslint/no-explicit-any */ /** * Parser */ var defaultNumberingSystem = { 'latn': { '_digits': '0123456789', '_type': 'numeric' } }; import { isUndefined, getValue, isBlazor } from '../util'; var defaultNumberSymbols = { 'decimal': '.', 'group': ',', 'percentSign': '%', 'plusSign': '+', 'minusSign': '-', 'infinity': '∞', 'nan': 'NaN', 'exponential': 'E' }; var latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; /** * Interface for parser base * * @private */ var ParserBase = /** @class */ (function () { function ParserBase() { } /** * Returns the cldr object for the culture specifies * * @param {Object} obj - Specifies the object from which culture object to be acquired. * @param {string} cName - Specifies the culture name. * @returns {Object} ? */ ParserBase.getMainObject = function (obj, cName) { var value = isBlazor() ? cName : 'main.' + cName; return getValue(value, obj); }; /** * Returns the numbering system object from given cldr data. * * @param {Object} obj - Specifies the object from which number system is acquired. * @returns {Object} ? */ ParserBase.getNumberingSystem = function (obj) { return getValue('supplemental.numberingSystems', obj) || this.numberingSystems; }; /** * Returns the reverse of given object keys or keys specified. * * @param {Object} prop - Specifies the object to be reversed. * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal. * @returns {Object} ? */ ParserBase.reverseObject = function (prop, keys) { var propKeys = keys || Object.keys(prop); var res = {}; for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) { var key = propKeys_1[_i]; if (!Object.prototype.hasOwnProperty.call(res, prop["" + key])) { res[prop["" + key]] = key; } } return res; }; /** * Returns the symbol regex by skipping the escape sequence. * * @param {string[]} props - Specifies the array values to be skipped. * @returns {RegExp} ? */ ParserBase.getSymbolRegex = function (props) { var regexStr = props.map(function (str) { return str.replace(/([.*+?^=!:${}()|[\]/\\])/g, '\\$1'); }).join('|'); var regExp = RegExp; return new regExp(regexStr, 'g'); }; /** * * @param {Object} prop ? * @returns {Object} ? */ ParserBase.getSymbolMatch = function (prop) { var matchKeys = Object.keys(defaultNumberSymbols); var ret = {}; for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) { var key = matchKeys_1[_i]; ret[prop["" + key]] = defaultNumberSymbols["" + key]; } return ret; }; /** * Returns regex string for provided value * * @param {string} val ? * @returns {string} ? */ ParserBase.constructRegex = function (val) { var len = val.length; var ret = ''; for (var i = 0; i < len; i++) { if (i !== len - 1) { ret += val[parseInt(i.toString(), 10)] + '|'; } else { ret += val[parseInt(i.toString(), 10)]; } } return ret; }; /** * Returns the replaced value of matching regex and obj mapper. * * @param {string} value - Specifies the values to be replaced. * @param {RegExp} regex - Specifies the regex to search. * @param {Object} obj - Specifies the object matcher to be replace value parts. * @returns {string} ? */ ParserBase.convertValueParts = function (value, regex, obj) { return value.replace(regex, function (str) { return obj["" + str]; }); }; /** * Returns default numbering system object for formatting from cldr data * * @param {Object} obj ? * @returns {NumericObject} ? */ ParserBase.getDefaultNumberingSystem = function (obj) { var ret = {}; ret.obj = getValue('numbers', obj); ret.nSystem = getValue('defaultNumberingSystem', ret.obj); return ret; }; /** * Returns the replaced value of matching regex and obj mapper. * * @param {Object} curObj ? * @param {Object} numberSystem ? * @param {boolean} needSymbols ? * @param {boolean} blazorMode ? * @returns {Object} ? */ ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) { var ret = {}; var cur = this.getDefaultNumberingSystem(curObj); if (!isUndefined(cur.nSystem) || blazorMode) { var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem); if (!isUndefined(digits)) { ret.numericPair = this.reverseObject(digits, latnNumberSystem); var regExp = RegExp; ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g'); ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']'; if (needSymbols) { ret.numericRegex = digits[0] + '-' + digits[9]; ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj); ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem); ret.numberSystem = cur.nSystem; } } } return ret; }; /** * Returns number mapper object for the provided cldr data * * @param {Object} curObj ? * @param {Object} numberSystem ? * @param {boolean} isNumber ? * @returns {NumberMapper} ? */ ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) { var ret = { mapper: {} }; var cur = this.getDefaultNumberingSystem(curObj); if (!isUndefined(cur.nSystem)) { ret.numberSystem = cur.nSystem; ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj); ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols); var digits = getValue(cur.nSystem + '._digits', numberSystem); if (!isUndefined(digits)) { for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) { var i = latnNumberSystem_1[_i]; ret.mapper[parseInt(i.toString(), 10)] = digits[parseInt(i.toString(), 10)]; } } } return ret; }; ParserBase.nPair = 'numericPair'; ParserBase.nRegex = 'numericRegex'; ParserBase.numberingSystems = defaultNumberingSystem; return ParserBase; }()); export { ParserBase }; /** * @private */ var blazorCurrencyData = { 'DJF': 'Fdj', 'ERN': 'Nfk', 'ETB': 'Br', 'NAD': '$', 'ZAR': 'R', 'XAF': 'FCFA', 'GHS': 'GH₵', 'XDR': 'XDR', 'AED': 'د.إ.', 'BHD': 'د.ب.', 'DZD': 'د.ج.', 'EGP': 'ج.م.', 'ILS': '₪', 'IQD': 'د.ع.', 'JOD': 'د.ا.', 'KMF': 'CF', 'KWD': 'د.ك.', 'LBP': 'ل.ل.', 'LYD': 'د.ل.', 'MAD': 'د.م.', 'MRU': 'أ.م.', 'OMR': 'ر.ع.', 'QAR': 'ر.ق.', 'SAR': 'ر.س.', 'SDG': 'ج.س.', 'SOS': 'S', 'SSP': '£', 'SYP': 'ل.س.', 'TND': 'د.ت.', 'YER': 'ر.ي.', 'CLP': '$', 'INR': '₹', 'TZS': 'TSh', 'EUR': '€', 'AZN': '₼', 'RUB': '₽', 'BYN': 'Br', 'ZMW': 'K', 'BGN': 'лв.', 'NGN': '₦', 'XOF': 'CFA', 'BDT': '৳', 'CNY': '¥', 'BAM': 'КМ', 'UGX': 'USh', 'USD': '$', 'CZK': 'Kč', 'GBP': '£', 'DKK': 'kr.', 'KES': 'Ksh', 'CHF': 'CHF', 'MVR': 'ރ.', 'BTN': 'Nu.', 'XCD': 'EC$', 'AUD': '$', 'BBD': '$', 'BIF': 'FBu', 'BMD': '$', 'BSD': '$', 'BWP': 'P', 'BZD': '$', 'CAD': '$', 'NZD': '$', 'FJD': '$', 'FKP': '£', 'GIP': '£', 'GMD': 'D', 'GYD': '$', 'HKD': '$', 'IDR': 'Rp', 'JMD': '$', 'KYD': '$', 'LRD': '$', 'MGA': 'Ar', 'MOP': 'MOP$', 'MUR': 'Rs', 'MWK': 'MK', 'MYR': 'RM', 'PGK': 'K', 'PHP': '₱', 'PKR': 'Rs', 'RWF': 'RF', 'SBD': '$', 'SCR': 'SR', 'SEK': 'kr', 'SGD': '$', 'SHP': '£', 'SLL': 'Le', 'ANG': 'NAf.', 'SZL': 'E', 'TOP': 'T$', 'TTD': '$', 'VUV': 'VT', 'WST': 'WS$', 'ARS': '$', 'BOB': 'Bs', 'BRL': 'R$', 'COP': '$', 'CRC': '₡', 'CUP': '$', 'DOP': '$', 'GTQ': 'Q', 'HNL': 'L', 'MXN': '$', 'NIO': 'C$', 'PAB': 'B/.', 'PEN': 'S/', 'PYG': '₲', 'UYU': '$', 'VES': 'Bs.S', 'IRR': 'ريال', 'GNF': 'FG', 'CDF': 'FC', 'HTG': 'G', 'XPF': 'FCFP', 'HRK': 'kn', 'HUF': 'Ft', 'AMD': '֏', 'ISK': 'kr', 'JPY': '¥', 'GEL': '₾', 'CVE': '​', 'KZT': '₸', 'KHR': '៛', 'KPW': '₩', 'KRW': '₩', 'KGS': 'сом', 'AOA': 'Kz', 'LAK': '₭', 'MZN': 'MTn', 'MKD': 'ден', 'MNT': '₮', 'BND': '$', 'MMK': 'K', 'NOK': 'kr', 'NPR': 'रु', 'AWG': 'Afl.', 'SRD': '$', 'PLN': 'zł', 'AFN': '؋', 'STN': 'Db', 'MDL': 'L', 'RON': 'lei', 'UAH': '₴', 'LKR': 'රු.', 'ALL': 'Lekë', 'RSD': 'дин.', 'TJS': 'смн', 'THB': '฿', 'TMT': 'm.', 'TRY': '₺', 'UZS': 'сўм', 'VND': '₫', 'TWD': 'NT$' }; /** * * @param {string} currencyCode ? * @returns {string} ? */ export function getBlazorCurrencySymbol(currencyCode) { return getValue(currencyCode || '', blazorCurrencyData); }