fix(localize): folder restructure and Chrome corrections
This commit is contained in:
parent
fe708509e9
commit
a9c55bc17b
33 changed files with 86 additions and 74 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import { localize } from '../localize.js';
|
||||
import { getLocale } from './getLocale.js';
|
||||
import { normalizeIntlDate } from './normalizeIntlDate.js';
|
||||
import { getLocale } from '../utils/getLocale.js';
|
||||
import { normalizeIntlDate } from './utils/normalizeIntlDate.js';
|
||||
|
||||
/** @typedef {import('../../types/LocalizeMixinTypes').DatePostProcessor} DatePostProcessor */
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { sanitizedDateTimeFormat } from './sanitizedDateTimeFormat.js';
|
||||
import { splitDate } from './splitDate.js';
|
||||
import { sanitizedDateTimeFormat } from './utils/sanitizedDateTimeFormat.js';
|
||||
import { splitDate } from './utils/splitDate.js';
|
||||
|
||||
/**
|
||||
* To compute the localized date format
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
import { localize } from '../localize.js';
|
||||
|
||||
/**
|
||||
* Gets the locale to use
|
||||
*
|
||||
* @param {string|undefined} locale Locale to override browser locale
|
||||
* @returns {string}
|
||||
*/
|
||||
export function getLocale(locale) {
|
||||
if (locale) {
|
||||
return locale;
|
||||
}
|
||||
if (localize && localize.locale) {
|
||||
return localize.locale;
|
||||
}
|
||||
return 'en-GB';
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
import { normalizeIntlDate } from './normalizeIntlDate.js';
|
||||
import { normalizeIntlDate } from './utils/normalizeIntlDate.js';
|
||||
import { forceShortMonthNamesForEnGb } from './utils/forceShortMonthNamesForEnGb.js';
|
||||
|
||||
/** @type {Object.<string, Object.<string,string[]>>} */
|
||||
const monthsLocaleCache = {};
|
||||
|
|
@ -26,7 +27,9 @@ export function getMonthNames({ locale, style = 'long' } = {}) {
|
|||
const normalizedDate = normalizeIntlDate(formattedDate);
|
||||
months.push(normalizedDate);
|
||||
}
|
||||
|
||||
if (locale === 'en-GB' && style === 'short') {
|
||||
months = forceShortMonthNamesForEnGb(months);
|
||||
}
|
||||
monthsLocaleCache[locale] = monthsLocaleCache[locale] || {};
|
||||
monthsLocaleCache[locale][style] = months;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { normalizeIntlDate } from './normalizeIntlDate.js';
|
||||
import { normalizeIntlDate } from './utils/normalizeIntlDate.js';
|
||||
|
||||
/** @type {Object.<string, Object.<string,string[]>>} */
|
||||
const weekdayNamesCache = {};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { localize } from '../localize.js';
|
||||
import { getDateFormatBasedOnLocale } from './getDateFormatBasedOnLocale.js';
|
||||
import { addLeadingZero } from './addLeadingZero.js';
|
||||
import { addLeadingZero } from './utils/addLeadingZero.js';
|
||||
|
||||
/**
|
||||
* @param {function} fn
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @param {string[]} months
|
||||
*/
|
||||
export function forceShortMonthNamesForEnGb(months) {
|
||||
if (months[8] === 'Sept') {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
months[8] = 'Sep';
|
||||
}
|
||||
return months;
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
import { formatDate } from './formatDate.js';
|
||||
import { formatDate } from '../formatDate.js';
|
||||
import { clean } from './clean.js';
|
||||
|
||||
/**
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
import { localize } from '../localize.js';
|
||||
import { getLocale } from './getLocale.js';
|
||||
import { getLocale } from '../utils/getLocale.js';
|
||||
import { formatNumberToParts } from './formatNumberToParts.js';
|
||||
|
||||
/** @typedef {import('../../types/LocalizeMixinTypes').NumberPostProcessor} NumberPostProcessor */
|
||||
|
|
|
|||
|
|
@ -1,10 +1,30 @@
|
|||
import { emptyStringWhenNumberNan } from './emptyStringWhenNumberNan.js';
|
||||
import { emptyStringWhenNumberNan } from './utils/emptyStringWhenNumberNan.js';
|
||||
import { getDecimalSeparator } from './getDecimalSeparator.js';
|
||||
import { getGroupSeparator } from './getGroupSeparator.js';
|
||||
import { getLocale } from './getLocale.js';
|
||||
import { normalizeIntl } from './normalizeIntl.js';
|
||||
import { normalSpaces } from './normalSpaces.js';
|
||||
import { roundNumber } from './roundNumber.js';
|
||||
import { getLocale } from '../utils/getLocale.js';
|
||||
import { normalizeIntl } from './utils/normalize-format-number-to-parts/normalizeIntl.js';
|
||||
import { normalSpaces } from './utils/normalSpaces.js';
|
||||
|
||||
/**
|
||||
* Round the number based on the options
|
||||
*
|
||||
* @param {number} number
|
||||
* @param {string} roundMode
|
||||
* @throws {Error} roundMode can only be round|floor|ceiling
|
||||
* @returns {number}
|
||||
*/
|
||||
export function roundNumber(number, roundMode) {
|
||||
switch (roundMode) {
|
||||
case 'floor':
|
||||
return Math.floor(number);
|
||||
case 'ceiling':
|
||||
return Math.ceil(number);
|
||||
case 'round':
|
||||
return Math.round(number);
|
||||
default:
|
||||
throw new Error('roundMode can only be round|floor|ceiling');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Splits a number up in parts for integer, fraction, group, literal, decimal and currency.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
import { formatNumberToParts } from './formatNumberToParts.js';
|
||||
import { localize } from '../localize.js';
|
||||
import { forceCurrencyNameForPHPEnGB } from './utils/normalize-get-currency-name/forceCurrencyNameForPHPEnGB.js';
|
||||
|
||||
/**
|
||||
* Based on number, returns currency name like 'US dollar'
|
||||
|
|
@ -15,9 +17,13 @@ export function getCurrencyName(currencyIso, options) {
|
|||
currency: currencyIso,
|
||||
currencyDisplay: 'name',
|
||||
}));
|
||||
const currencyName = parts
|
||||
let currencyName = parts
|
||||
.filter(p => p.type === 'currency')
|
||||
.map(o => o.value)
|
||||
.join(' ');
|
||||
const locale = options?.locale || localize.locale;
|
||||
if (currencyIso === 'PHP' && locale === 'en-GB') {
|
||||
currencyName = forceCurrencyNameForPHPEnGB(currencyName);
|
||||
}
|
||||
return currencyName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { getLocale } from './getLocale.js';
|
||||
import { getLocale } from '../utils/getLocale.js';
|
||||
|
||||
/**
|
||||
* To get the decimal separator
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { getLocale } from './getLocale.js';
|
||||
import { normalSpaces } from './normalSpaces.js';
|
||||
import { getLocale } from '../utils/getLocale.js';
|
||||
import { normalSpaces } from './utils/normalSpaces.js';
|
||||
|
||||
/**
|
||||
* Gets the group separator
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
/**
|
||||
* Round the number based on the options
|
||||
*
|
||||
* @param {number} number
|
||||
* @param {string} roundMode
|
||||
* @throws {Error} roundMode can only be round|floor|ceiling
|
||||
* @returns {number}
|
||||
*/
|
||||
export function roundNumber(number, roundMode) {
|
||||
switch (roundMode) {
|
||||
case 'floor':
|
||||
return Math.floor(number);
|
||||
case 'ceiling':
|
||||
return Math.ceil(number);
|
||||
case 'round':
|
||||
return Math.round(number);
|
||||
default:
|
||||
throw new Error('roundMode can only be round|floor|ceiling');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
import { localize } from '../localize.js';
|
||||
import { localize } from '../../localize.js';
|
||||
|
||||
/**
|
||||
* When number is NaN we should return an empty string or returnIfNaN param
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* Add separators when they are not present
|
||||
*
|
||||
* @typedef {import('../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @typedef {import('../../../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @param {FormatNumberPart[]} formattedParts
|
||||
* @param {string} groupSeparator
|
||||
* @returns {FormatNumberPart[]}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* For Dutch and Belgian amounts the currency should be at the end of the string
|
||||
*
|
||||
* @typedef {import('../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @typedef {import('../../../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @param {FormatNumberPart[]} formattedParts
|
||||
* @returns {FormatNumberPart[]}
|
||||
*/
|
||||
|
|
@ -8,9 +8,9 @@ const CURRENCY_CODE_SYMBOL_MAP = {
|
|||
/**
|
||||
* Change the symbols for locale 'en-AU', due to bug in Chrome
|
||||
*
|
||||
* @typedef {import('../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @typedef {import('../../../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @param {FormatNumberPart[]} formattedParts
|
||||
* @param {import('../../types/LocalizeMixinTypes').FormatNumberOptions} [options]
|
||||
* @param {import('../../../../types/LocalizeMixinTypes').FormatNumberOptions} [options]
|
||||
* @returns {FormatNumberPart[]}
|
||||
*/
|
||||
export function forceENAUSymbols(formattedParts, { currency, currencyDisplay } = {}) {
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import { normalSpaces } from './normalSpaces.js';
|
||||
import { normalSpaces } from '../normalSpaces.js';
|
||||
|
||||
/**
|
||||
* Parts with forced "normal" spaces
|
||||
*
|
||||
* @typedef {import('../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @typedef {import('../../../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @param {FormatNumberPart[]} formattedParts
|
||||
* @returns {FormatNumberPart[]}
|
||||
*/
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
/**
|
||||
* When in some locales there is no space between currency and amount it is added
|
||||
*
|
||||
* @typedef {import('../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @typedef {import('../../../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @param {FormatNumberPart[]} formattedParts
|
||||
* @param {import('../../types/LocalizeMixinTypes').FormatNumberOptions} [options]
|
||||
* @param {import('../../../../types/LocalizeMixinTypes').FormatNumberOptions} [options]
|
||||
* @returns {FormatNumberPart[]}
|
||||
*/
|
||||
export function forceSpaceBetweenCurrencyCodeAndNumber(
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
* @desc Intl uses 0 as group separator for bg-BG locale.
|
||||
* This should be a ' '
|
||||
*
|
||||
* @typedef {import('../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @typedef {import('../../../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @param {FormatNumberPart[]} formattedParts
|
||||
* @returns {FormatNumberPart[]} corrected formatted parts
|
||||
*/
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @typedef {import('../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @typedef {import('../../../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @param {FormatNumberPart[]} formattedParts
|
||||
* @param {import('../../types/LocalizeMixinTypes').FormatNumberOptions} [options]
|
||||
* @param {import('../../../../types/LocalizeMixinTypes').FormatNumberOptions} [options]
|
||||
* @returns {FormatNumberPart[]}
|
||||
*/
|
||||
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @typedef {import('../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @typedef {import('../../../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @param {FormatNumberPart[]} formattedParts
|
||||
* @param {import('../../types/LocalizeMixinTypes').FormatNumberOptions} [options]
|
||||
* @param {import('../../../../types/LocalizeMixinTypes').FormatNumberOptions} [options]
|
||||
* @returns {FormatNumberPart[]}
|
||||
*/
|
||||
export function forceYenSymbol(formattedParts, { currency, currencyDisplay } = {}) {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
import { getGroupSeparator } from './getGroupSeparator.js';
|
||||
import { getGroupSeparator } from '../../getGroupSeparator.js';
|
||||
import { forceAddGroupSeparators } from './forceAddGroupSeparators.js';
|
||||
import { forceCurrencyToEnd } from './forceCurrencyToEnd.js';
|
||||
import { forceNormalSpaces } from './forceNormalSpaces.js';
|
||||
|
|
@ -9,11 +9,11 @@ import { forceTryCurrencyCode } from './forceTryCurrencyCode.js';
|
|||
import { forceENAUSymbols } from './forceENAUSymbols.js';
|
||||
|
||||
/**
|
||||
* Function with all fixes on localize
|
||||
* Normalizes function "formatNumberToParts"
|
||||
*
|
||||
* @typedef {import('../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @typedef {import('../../../../types/LocalizeMixinTypes').FormatNumberPart} FormatNumberPart
|
||||
* @param {FormatNumberPart[]} formattedParts
|
||||
* @param {import('../../types/LocalizeMixinTypes').FormatNumberOptions} options
|
||||
* @param {import('../../../../types/LocalizeMixinTypes').FormatNumberOptions} options
|
||||
* @param {string} _locale
|
||||
* @returns {FormatNumberPart[]}
|
||||
*/
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* @param {string} currencyName
|
||||
*/
|
||||
export function forceCurrencyNameForPHPEnGB(currencyName) {
|
||||
if (currencyName === 'Philippine pesos') {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
currencyName = 'Philippine pisos';
|
||||
}
|
||||
return currencyName;
|
||||
}
|
||||
Loading…
Reference in a new issue