diff --git a/README.md b/README.md index 66b62ff..f75c37b 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ writtenNumber(1234, {lang: 'eo'}); // => 'mil ducent tridek kvar' writtenNumber(1234, {lang: 'vi'}); // => 'một ngàn hai trăm và ba mươi bốn' writtenNumber(1234, {lang: 'uk'}); // => 'одна тисяча двісті тридцять чотири' writtenNumber(1234, {lang: 'id'}); // => 'seribu dua ratus tiga puluh empat' +writtenNumber(1234, {lang: 'ku'}); // => 'هەزار و دووسەد و سی و چوار' ``` ## Options @@ -65,6 +66,7 @@ Currently supported languages are: | Ukrainian | `uk` | | Indonesian | `id` | | Russian | `ru` | +| Kurdish (Sorani) | `ku` | ## Contributing diff --git a/dist/written-number.js b/dist/written-number.js index e11bf5f..303bf4b 100644 --- a/dist/written-number.js +++ b/dist/written-number.js @@ -946,6 +946,154 @@ module.exports={ } },{}],11:[function(require,module,exports){ +module.exports={ + "useLongScale": false, + "baseSeparator": "", + "unitSeparator": "", + "allSeparator": "و ", + "base": { + "0": "سفر", + "1": "یەک", + "2": "دوو", + "3": "سێ", + "4": "چوار", + "5": "پێنج", + "6": "شەش", + "7": "حەفت", + "8": "هەشت", + "9": "نۆ", + + "10": "دە", + "11": "یازدە", + "12": "دوازدە", + "13": "سێزدە", + "14": "چواردە", + "15": "پازدە", + "16": "شازدە", + "17": "حەڤدە", + "18": "هەژدە", + "19": "نۆزدە", + + "20": "بیست", + "21": "بیست و یەک", + "22": "بیست و دوو", + "23": "بیست و سێ", + "24": "بیست و چوار", + "25": "بیست و پێنج", + "26": "بیست و شەش", + "27": "بیست و حەفت", + "28": "بیست و هەشت", + "29": "بیست و نۆ", + + "30": "سی", + "31": "سی و یەک", + "32": "سی و دوو", + "33": "سی و سێ", + "34": "سی و چوار", + "35": "سی و پێنج", + "36": "سی و شەش", + "37": "سی و حەفت", + "38": "سی و هەشت", + "39": "سی و نۆ", + + "40": "چل", + "41": "چل و یەک", + "42": "چل و دوو", + "43": "چل و سێ", + "44": "چل و چوار", + "45": "چل و پێنج", + "46": "چل و شەش", + "47": "چل و حەفت", + "48": "چل و هەشت", + "49": "چل و نۆ", + + "50": "پەنجا", + "51": "پەنجا و یەک", + "52": "پەنجا و دوو", + "53": "پەنجا و سێ", + "54": "پەنجا و چوار", + "55": "پەنجا و پێنج", + "56": "پەنجا و شەش", + "57": "پەنجا و حەفت", + "58": "پەنجا و هەشت", + "59": "پەنجا و نۆ", + + "60": "شەست", + "61": "شەست و یەک", + "62": "شەست و دوو", + "63": "شەست و سێ", + "64": "شەست و چوار", + "65": "شەست و پێنج", + "66": "شەست و شەش", + "67": "شەست و حەفت", + "68": "شەست و هەشت", + "69": "شەست و نۆ", + + "70": "حەفتا", + "71": "حەفتا و یەک", + "72": "حەفتا و دوو", + "73": "حەفتا و سێ", + "74": "حەفتا و چوار", + "75": "حەفتا و پێنج", + "76": "حەفتا و شەش", + "77": "حەفتا و حەفت", + "78": "حەفتا و هەشت", + "79": "حەفتا و نۆ", + + "80": "هەشتا", + "81": "هەشتا و یەک", + "82": "هەشتا و دوو", + "83": "هەشتا و سێ", + "84": "هەشتا و چوار", + "85": "هەشتا و پێنج", + "86": "هەشتا و شەش", + "87": "هەشتا و حەفت", + "88": "هەشتا و هەشت", + "89": "هەشتا و نۆ", + + "90": "نۆوەد", + "91": "نۆوەد و یەک", + "92": "نۆوەد و دوو", + "93": "نۆوەد و سێ", + "94": "نۆوەد و چوار", + "95": "نۆوەد و پێنج", + "96": "نۆوەد و شەش", + "97": "نۆوەد و حەفت", + "98": "نۆوەد و هەشت", + "99": "نۆوەد و نۆ", + + "200": "دوو سەد", + "300": "سێ سەد", + "400": "چوار سەد", + "500": "پێنج سەد", + "600": "شەش سەد", + "700": "حەفت سەد", + "800": "هەشت سەد", + "900": "نۆ سەد" + }, + "units" : [ + {"singular":"سەد", "useBaseInstead": true, "useBaseException": [1]}, + {"singular":"هەزار", "dual":"دوو هەزار", "plural":"هەزار", "restrictedPlural": true, "avoidPrefixException": [1, 2]}, + {"singular":"ملیۆن", "dual":"دوو ملیۆن", "plural":"ملیۆن", "restrictedPlural": true, "avoidPrefixException": [1, 2]}, + {"singular":"مليار", "dual":"دوو ملیار", "plural":"ملیار", "restrictedPlural": true, "avoidPrefixException": [1, 2]}, + + {"singular":"تريليۆن", "avoidPrefixException": [1]}, + {"singular":"كوادريليۆن", "avoidPrefixException": [1]}, + {"singular":"كوينتليۆن", "avoidPrefixException": [1]}, + {"singular":"سكستليۆن", "avoidPrefixException": [1]}, + {"singular":"سبتيلليۆن", "avoidPrefixException": [1]}, + {"singular":"أوكتيليۆن", "avoidPrefixException": [1]}, + {"singular":"نونيلليۆن", "avoidPrefixException": [1]}, + {"singular":"دشيليۆن", "avoidPrefixException": [1]}, + {"singular":"أوندشيلليۆن", "avoidPrefixException": [1]}, + {"singular":"دودشيليۆن", "avoidPrefixException": [1]}, + {"singular":"تريدشيليۆن", "avoidPrefixException": [1]}, + {"singular":"كواتوردشيليۆن", "avoidPrefixException": [1]}, + {"singular":"كويندشيليۆن" , "avoidPrefixException": [1]} + ], + "unitExceptions": {} +} +},{}],12:[function(require,module,exports){ module.exports={ "useLongScale": true, "baseSeparator": " e ", @@ -1052,7 +1200,7 @@ module.exports={ ] } -},{}],12:[function(require,module,exports){ +},{}],13:[function(require,module,exports){ module.exports={ "useLongScale": false, "baseSeparator": " e ", @@ -1171,7 +1319,7 @@ module.exports={ ] } -},{}],13:[function(require,module,exports){ +},{}],14:[function(require,module,exports){ module.exports={ "useLongScale": false, "baseSeparator": " ", @@ -1358,7 +1506,7 @@ module.exports={ ], "unitExceptions": [] } -},{}],14:[function(require,module,exports){ +},{}],15:[function(require,module,exports){ module.exports={ "useLongScale": false, "baseSeparator": " ", @@ -1411,7 +1559,7 @@ module.exports={ ], "unitExceptions": [] } -},{}],15:[function(require,module,exports){ +},{}],16:[function(require,module,exports){ module.exports={ "useLongScale": false, "baseSeparator": " ", @@ -1599,7 +1747,7 @@ module.exports={ "unitExceptions": [] } -},{}],16:[function(require,module,exports){ +},{}],17:[function(require,module,exports){ module.exports={ "useLongScale": false, "baseSeparator": " ", @@ -1650,12 +1798,12 @@ module.exports={ ], "unitExceptions": [] } -},{}],17:[function(require,module,exports){ +},{}],18:[function(require,module,exports){ "use strict"; exports = module.exports = writtenNumber; var util = require("./util"); -var languages = ["en", "es", "ar", "az", "pt", "fr", "eo", "it", "vi", "tr", "uk", "ru", "id"]; +var languages = ["en", "es", "ar", "az", "pt", "fr", "eo", "it", "vi", "tr", "uk", "ru", "id","ku"]; var i18n = { en: require("./i18n/en.json"), es: require("./i18n/es.json"), @@ -1672,7 +1820,8 @@ var i18n = { enIndian: require("./i18n/en-indian.json"), uk: require("./i18n/uk.json"), ru: require("./i18n/ru.json"), - id: require("./i18n/id.json") + id: require("./i18n/id.json"), + ku: require("./i18n/ku.json") }; exports.i18n = i18n; @@ -1876,7 +2025,7 @@ function handleSmallerThan100(n, language, unit, baseCardinals, alternativeBaseC return alternativeBaseCardinals[dec] || baseCardinals[dec]; } -},{"./i18n/ar.json":1,"./i18n/az.json":2,"./i18n/en-indian.json":3,"./i18n/en.json":4,"./i18n/eo.json":5,"./i18n/es.json":6,"./i18n/fr.json":7,"./i18n/hu.json":8,"./i18n/id.json":9,"./i18n/it.json":10,"./i18n/pt-PT.json":11,"./i18n/pt.json":12,"./i18n/ru.json":13,"./i18n/tr.json":14,"./i18n/uk.json":15,"./i18n/vi.json":16,"./util":18}],18:[function(require,module,exports){ +},{"./i18n/ar.json":1,"./i18n/az.json":2,"./i18n/en-indian.json":3,"./i18n/en.json":4,"./i18n/eo.json":5,"./i18n/es.json":6,"./i18n/fr.json":7,"./i18n/hu.json":8,"./i18n/id.json":9,"./i18n/it.json":10,"./i18n/ku.json":11,"./i18n/pt-PT.json":12,"./i18n/pt.json":13,"./i18n/ru.json":14,"./i18n/tr.json":15,"./i18n/uk.json":16,"./i18n/vi.json":17,"./util":19}],19:[function(require,module,exports){ "use strict"; /** * Merges a set of default keys with a target object @@ -1899,5 +2048,5 @@ function defaults(target, defs) { } exports.defaults = defaults; -},{}]},{},[17])(17) +},{}]},{},[18])(18) }); diff --git a/dist/written-number.min.js b/dist/written-number.min.js index a1ab930..0f1f4c0 100644 --- a/dist/written-number.min.js +++ b/dist/written-number.min.js @@ -1 +1,2 @@ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.writtenNumber=a()}}(function(){return function(){function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){return e(b[g][1][a]||a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g-1&&(!j.useBaseExceptionWhenNoTrailingNumbers||0===o&&s.length);x?s.push(w>1&&j.plural?j.plural:j.singular):s.push(q[w*l[o]]||p[w*l[o]])}else{var y;if("string"==typeof j?y=j:1===w||j.useSingularEnding&&w%10==1&&(!j.avoidEndingRules||j.avoidEndingRules.indexOf(w)<0)?y=j.singular:j.few&&(w>1&&w<5||j.useFewEnding&&w%10>1&&w%10<5&&(!j.avoidEndingRules||j.avoidEndingRules.indexOf(w)<0))?y=j.few:(y=!j.plural||j.avoidInNumberPlural&&r?j.singular:j.plural,y=2===w&&j.dual?j.dual:y,y=w>10&&j.restrictedPlural?j.singular:y),j.avoidPrefixException&&j.avoidPrefixException.indexOf(w)>-1)s.push(y);else{var z=c.unitExceptions[w],A=z||d(w,f.defaults({noAnd:!(c.andException&&c.andException[w]||j.andException),alternativeBase:j.useAlternativeBase},b));a-=w*l[o],s.push(A+" "+y)}}}var B=t*Math.floor(a/t),C=a-B;if(c.andWhenTrailing&&t&&0-1&&(!j.useBaseExceptionWhenNoTrailingNumbers||0===o&&s.length);x?s.push(w>1&&j.plural?j.plural:j.singular):s.push(q[w*l[o]]||p[w*l[o]])}else{var y +;if("string"==typeof j?y=j:1===w||j.useSingularEnding&&w%10==1&&(!j.avoidEndingRules||j.avoidEndingRules.indexOf(w)<0)?y=j.singular:j.few&&(w>1&&w<5||j.useFewEnding&&w%10>1&&w%10<5&&(!j.avoidEndingRules||j.avoidEndingRules.indexOf(w)<0))?y=j.few:(y=!j.plural||j.avoidInNumberPlural&&r?j.singular:j.plural,y=2===w&&j.dual?j.dual:y,y=w>10&&j.restrictedPlural?j.singular:y),j.avoidPrefixException&&j.avoidPrefixException.indexOf(w)>-1)s.push(y);else{var z=c.unitExceptions[w],A=z||d(w,f.defaults({noAnd:!(c.andException&&c.andException[w]||j.andException),alternativeBase:j.useAlternativeBase},b));a-=w*l[o],s.push(A+" "+y)}}}var B=t*Math.floor(a/t),C=a-B;if(c.andWhenTrailing&&t&&0 10000", function () { + writtenNumber(10000).should.equal("دە هەزار"); + writtenNumber(11000).should.equal("یازدە هەزار"); + writtenNumber(4323000).should.equal("چوار ملیۆن و سێ سەد و بیست و سێ هەزار"); + writtenNumber(4323055).should.equal("چوار ملیۆن و سێ سەد و بیست و سێ هەزار و پەنجا و پێنج"); + writtenNumber(1570025).should.equal("ملیۆن و پێنج سەد و حەفتا هەزار و بیست و پێنج"); + }); + + it("correctly converts numbers > 1 000 000 000", function () { + writtenNumber(1000000000).should.equal("مليار"); + writtenNumber(2580000000).should.equal("دوو ملیار و پێنج سەد و هەشتا ملیۆن"); + writtenNumber(1000000000000).should.equal("تريليۆن"); + writtenNumber(3627000000000).should.equal("سێ تريليۆن و شەش سەد و بیست و حەفت مليار"); + }); + }); }); \ No newline at end of file