locale_ko.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.ko = ko;
  4. const grammar_js_1 = require("../../rule_engine/grammar.js");
  5. const locale_js_1 = require("../locale.js");
  6. const locale_util_js_1 = require("../locale_util.js");
  7. const numbers_ko_js_1 = require("../numbers/numbers_ko.js");
  8. const tr = require("../transformers.js");
  9. let locale = null;
  10. function ko() {
  11. if (!locale) {
  12. locale = create();
  13. }
  14. return locale;
  15. }
  16. function create() {
  17. const loc = (0, locale_js_1.createLocale)();
  18. loc.NUMBERS = numbers_ko_js_1.NUMBERS;
  19. loc.FUNCTIONS.radicalNestDepth = locale_util_js_1.nestingToString;
  20. loc.FUNCTIONS.plural = function (unit) {
  21. return unit;
  22. };
  23. loc.FUNCTIONS.si = (prefix, unit) => {
  24. return prefix + unit;
  25. };
  26. loc.FUNCTIONS.combineRootIndex = function (index, postfix) {
  27. return index + postfix;
  28. };
  29. loc.ALPHABETS.combiner = tr.Combiners.prefixCombiner;
  30. loc.ALPHABETS.digitTrans.default = numbers_ko_js_1.NUMBERS.numberToWords;
  31. loc.CORRECTIONS.postposition = (name) => {
  32. if (['같다', '는', '와', '를', '로'].includes(name))
  33. return name;
  34. const char = name.slice(-1);
  35. const value = (char.charCodeAt(0) - 44032) % 28;
  36. let final = value > 0 ? true : false;
  37. if (char.match(/[r,l,n,m,1,3,6,7,8,0]/i))
  38. final = true;
  39. grammar_js_1.Grammar.getInstance().setParameter('final', final);
  40. return name;
  41. };
  42. loc.CORRECTIONS.article = (name) => {
  43. const final = grammar_js_1.Grammar.getInstance().getParameter('final');
  44. if (final)
  45. grammar_js_1.Grammar.getInstance().setParameter('final', false);
  46. if (name === '같다')
  47. name = '는';
  48. const temp = { 는: '은', 와: '과', 를: '을', 로: '으로' }[name];
  49. return temp !== undefined && final ? temp : name;
  50. };
  51. return loc;
  52. }