locale_de.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.de = de;
  4. const grammar_js_1 = require("../../rule_engine/grammar.js");
  5. const locale_util_js_1 = require("../locale_util.js");
  6. const locale_js_1 = require("../locale.js");
  7. const numbers_de_js_1 = require("../numbers/numbers_de.js");
  8. const germanPrefixCombiner = function (letter, font, cap) {
  9. if (cap === 's') {
  10. font = font
  11. .split(' ')
  12. .map(function (x) {
  13. return x.replace(/s$/, '');
  14. })
  15. .join(' ');
  16. cap = '';
  17. }
  18. letter = cap ? cap + ' ' + letter : letter;
  19. return font ? font + ' ' + letter : letter;
  20. };
  21. const germanPostfixCombiner = function (letter, font, cap) {
  22. letter = !cap || cap === 's' ? letter : cap + ' ' + letter;
  23. return font ? letter + ' ' + font : letter;
  24. };
  25. let locale = null;
  26. function de() {
  27. if (!locale) {
  28. locale = create();
  29. }
  30. return locale;
  31. }
  32. function create() {
  33. const loc = (0, locale_js_1.createLocale)();
  34. loc.NUMBERS = numbers_de_js_1.NUMBERS;
  35. loc.COMBINERS['germanPostfix'] = germanPostfixCombiner;
  36. loc.ALPHABETS.combiner = germanPrefixCombiner;
  37. loc.FUNCTIONS.radicalNestDepth = (x) => {
  38. return x > 1 ? loc.NUMBERS.numberToWords(x) + 'fach' : '';
  39. };
  40. loc.FUNCTIONS.combineRootIndex = (postfix, index) => {
  41. const root = index ? index + 'wurzel' : '';
  42. return postfix.replace('Wurzel', root);
  43. };
  44. loc.FUNCTIONS.combineNestedRadical = (a, b, c) => {
  45. a = c.match(/exponent$/) ? a + 'r' : a;
  46. const count = (b ? b + ' ' : '') + a;
  47. return c.match(/ /) ? c.replace(/ /, ' ' + count + ' ') : count + ' ' + c;
  48. };
  49. loc.FUNCTIONS.fontRegexp = function (font) {
  50. font = font
  51. .split(' ')
  52. .map(function (x) {
  53. return x.replace(/s$/, '(|s)');
  54. })
  55. .join(' ');
  56. return new RegExp('((^' + font + ' )|( ' + font + '$))');
  57. };
  58. loc.CORRECTIONS.correctOne = (num) => num.replace(/^eins$/, 'ein');
  59. loc.CORRECTIONS.localFontNumber = (font) => {
  60. const realFont = (0, locale_util_js_1.localFont)(font);
  61. return realFont
  62. .split(' ')
  63. .map(function (x) {
  64. return x.replace(/s$/, '');
  65. })
  66. .join(' ');
  67. };
  68. loc.CORRECTIONS.lowercase = (name) => name.toLowerCase();
  69. loc.CORRECTIONS.article = (name) => {
  70. const decl = grammar_js_1.Grammar.getInstance().getParameter('case');
  71. const plural = grammar_js_1.Grammar.getInstance().getParameter('plural');
  72. if (decl === 'dative') {
  73. return { der: 'dem', die: plural ? 'den' : 'der', das: 'dem' }[name];
  74. }
  75. return name;
  76. };
  77. loc.CORRECTIONS.masculine = (name) => {
  78. const decl = grammar_js_1.Grammar.getInstance().getParameter('case');
  79. if (decl === 'dative') {
  80. return name + 'n';
  81. }
  82. return name;
  83. };
  84. return loc;
  85. }