From 708b6f991d1f37013a69f5e880f44ac267131661 Mon Sep 17 00:00:00 2001 From: Thijs Louisse Date: Wed, 27 Nov 2019 13:25:59 +0100 Subject: [PATCH] feat(localize): add getCurrencyName --- packages/localize/index.js | 1 + .../localize/src/number/getCurrencyName.js | 22 +++++++++++++++++++ .../test/number/getCurrencyName.test.js | 14 ++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 packages/localize/src/number/getCurrencyName.js create mode 100644 packages/localize/test/number/getCurrencyName.test.js diff --git a/packages/localize/index.js b/packages/localize/index.js index 28534aa83..86412a7c8 100644 --- a/packages/localize/index.js +++ b/packages/localize/index.js @@ -6,6 +6,7 @@ export { normalizeDateTime } from './src/date/normalizeDateTime.js'; export { parseDate } from './src/date/parseDate.js'; export { formatNumber } from './src/number/formatNumber.js'; export { formatNumberToParts } from './src/number/formatNumberToParts.js'; +export { getCurrencyName } from './src/number/getCurrencyName.js'; export { getDecimalSeparator } from './src/number/getDecimalSeparator.js'; export { getFractionDigits } from './src/number/getFractionDigits.js'; export { getGroupSeparator } from './src/number/getGroupSeparator.js'; diff --git a/packages/localize/src/number/getCurrencyName.js b/packages/localize/src/number/getCurrencyName.js new file mode 100644 index 000000000..b2cc8e3dc --- /dev/null +++ b/packages/localize/src/number/getCurrencyName.js @@ -0,0 +1,22 @@ +import { formatNumberToParts } from './formatNumberToParts.js'; + +/** + * Based on number, returns currency name like 'US dollar' + * + * @param {string} currencyIso iso code like USD + * @param {Object} options Intl options are available extended by roundMode + * @returns {string} currency name like 'US dollar' + */ +export function getCurrencyName(currencyIso, options) { + const parts = formatNumberToParts(1, { + ...options, + style: 'currency', + currency: currencyIso, + currencyDisplay: 'name', + }); + const currencyName = parts + .filter(p => p.type === 'currency') + .map(o => o.value) + .join(' '); + return currencyName; +} diff --git a/packages/localize/test/number/getCurrencyName.test.js b/packages/localize/test/number/getCurrencyName.test.js new file mode 100644 index 000000000..dcb0776d6 --- /dev/null +++ b/packages/localize/test/number/getCurrencyName.test.js @@ -0,0 +1,14 @@ +import { expect } from '@open-wc/testing'; +import { localizeTearDown } from '../../test-helpers.js'; +import { getCurrencyName } from '../../src/number/getCurrencyName.js'; + +describe('getCurrencyName', () => { + afterEach(localizeTearDown); + + it('returns the right name for currency and locale combination', async () => { + expect(getCurrencyName('USD', { locale: 'en-GB' })).to.equal('US dollars'); + expect(getCurrencyName('USD', { locale: 'nl-NL' })).to.equal('Amerikaanse dollar'); + expect(getCurrencyName('EUR', { locale: 'en-GB' })).to.equal('euros'); + expect(getCurrencyName('EUR', { locale: 'nl-NL' })).to.equal('euro'); + }); +});