numbers_ko.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.NUMBERS = void 0;
  4. const messages_js_1 = require("../messages.js");
  5. function thousandsToWords_(num) {
  6. let n = num % 10000;
  7. let str = '';
  8. str += exports.NUMBERS.ones[Math.floor(n / 1000)]
  9. ? Math.floor(n / 1000) === 1
  10. ? '천'
  11. : exports.NUMBERS.ones[Math.floor(n / 1000)] + '천'
  12. : '';
  13. n = n % 1000;
  14. if (n) {
  15. str += exports.NUMBERS.ones[Math.floor(n / 100)]
  16. ? Math.floor(n / 100) === 1
  17. ? '백'
  18. : exports.NUMBERS.ones[Math.floor(n / 100)] + '백'
  19. : '';
  20. n = n % 100;
  21. str +=
  22. exports.NUMBERS.tens[Math.floor(n / 10)] + (n % 10 ? exports.NUMBERS.ones[n % 10] : '');
  23. }
  24. return str;
  25. }
  26. function numberToWords(num) {
  27. if (num === 0)
  28. return exports.NUMBERS.zero;
  29. if (num >= Math.pow(10, 36))
  30. return num.toString();
  31. let pos = 0;
  32. let str = '';
  33. while (num > 0) {
  34. const thousands = num % 10000;
  35. if (thousands) {
  36. str =
  37. thousandsToWords_(num % 10000) +
  38. (pos ? exports.NUMBERS.large[pos] + exports.NUMBERS.numSep : '') +
  39. str;
  40. }
  41. num = Math.floor(num / 10000);
  42. pos++;
  43. }
  44. return str.replace(/ $/, '');
  45. }
  46. function numberToOrdinal(num, _plural) {
  47. if (num === 1)
  48. return '첫번째';
  49. return wordOrdinal(num) + '번째';
  50. }
  51. function wordOrdinal(num) {
  52. const ordinal = numberToWords(num);
  53. num %= 100;
  54. const label = numberToWords(num);
  55. if (!label || !num)
  56. return ordinal;
  57. const tens = num === 20 ? '스무' : exports.NUMBERS.tens[10 + Math.floor(num / 10)];
  58. const ones = exports.NUMBERS.ones[10 + Math.floor(num % 10)];
  59. return ordinal.slice(0, -label.length) + tens + ones;
  60. }
  61. function numericOrdinal(num) {
  62. return numberToOrdinal(num, false);
  63. }
  64. exports.NUMBERS = (0, messages_js_1.NUMBERS)({
  65. wordOrdinal: wordOrdinal,
  66. numericOrdinal: numericOrdinal,
  67. numberToWords: numberToWords,
  68. numberToOrdinal: numberToOrdinal
  69. });