diff --git a/languages/uz-UZ.js b/languages/uz-UZ.js new file mode 100644 index 00000000..f04c73bf --- /dev/null +++ b/languages/uz-UZ.js @@ -0,0 +1,60 @@ +/*! + * numbro.js language configuration + * language : Uzbek + * locale : Uzbekistan + * author : Kairat Sultan : https://github.com/qayrat-sultan + */ + +module.exports = { + languageTag: "uz-UZ", + delimiters: { + thousands: " ", + decimal: "," + }, + abbreviations: { + thousand: "ming", + million: "mln", + billion: "mlrd", + trillion: "trln" + }, + ordinal: function() { + // not ideal, but since in Uzbek it can taken on + // different forms (masculine, feminine, neuter) + // this is all we can do + return "."; + }, + currency: { + symbol: "soʻm.", + position: "postfix", + code: "UZS" + }, + currencyFormat: { + thousandSeparated: true, + totalLength: 4, + spaceSeparated: true, + average: true + }, + formats: { + fourDigits: { + totalLength: 4, + spaceSeparated: true, + average: true + }, + fullWithTwoDecimals: { + output: "currency", + mantissa: 2, + spaceSeparated: true, + thousandSeparated: true + }, + fullWithTwoDecimalsNoCurrency: { + mantissa: 2, + thousandSeparated: true + }, + fullWithNoDecimals: { + output: "currency", + spaceSeparated: true, + thousandSeparated: true, + mantissa: 0 + } + } +}; diff --git a/tests/languages/uz-UZ-tests.js b/tests/languages/uz-UZ-tests.js new file mode 100644 index 00000000..56be630e --- /dev/null +++ b/tests/languages/uz-UZ-tests.js @@ -0,0 +1,48 @@ +const numbro = require("../../src/numbro"); +const trTR = require("../../languages/uz-UZ"); + +describe("uz-UZ", () => { + beforeAll(() => { + numbro.registerLanguage(uzUZ, true); + }); + + afterAll(() => { + numbro.setLanguage("en-US"); + }); + + it("formats correctly", () => { + let data = [ + [10000, "0,0.0000", "10 000,0000"], + [10000.23, "0,0", "10 000,23"], + [-10000, "0,0.0", "-10 000,0"], + [10000.1234, "0.000", "10000,123"], + [-10000, "(0,0.0000)", "(10 000,0000)"], + [-0.23, ".00", "-,23"], + [-0.23, "(.00)", "(,23)"], + [0.23, "0.00000", "0,23000"], + [1230974, "0.0a", "1,2mln"], + [1460, "0a", "1ming"], + [-104000, "0a", "-104ming"], + [1, "0[.]0", "1"] + ]; + + data.forEach(([input, format, expectedResult]) => { + let result = numbro(input).format(format); + expect(result).toBe(expectedResult, `Should format correctly ${input} with ${format}`); + }); + }); + + it("formats currency correctly", () => { + let data = [ + [1000.234, "$0,0.00", "1 000,23\u20BA"], + [-1000.234, "($0,0)", "(1 000,234)\u20BA"], + [-1000.234, "$0.00", "-1000,23\u20BA"], + [1230974, "($0.00a)", "1,23mln\u20BA"] + ]; + + data.forEach(([input, format, expectedResult]) => { + let result = numbro(input).format(format); + expect(result).toBe(expectedResult, `Should format currency correctly ${input} with ${format}`); + }); + }); +}); \ No newline at end of file