@keymanapp/kmc-model 17.0.85-alpha → 17.0.87-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/package.json +6 -5
  2. package/.nyc_output/coverage-10524-1681239236645-0.json +0 -1
  3. package/Makefile +0 -38
  4. package/build/cjs-src/lexical-model-compiler.cjs +0 -152688
  5. package/build/test/helpers/index.d.ts +0 -69
  6. package/build/test/helpers/index.d.ts.map +0 -1
  7. package/build/test/helpers/index.js +0 -160
  8. package/build/test/helpers/index.js.map +0 -1
  9. package/build/test/test-compile-model-with-pseudoclosure.d.ts +0 -2
  10. package/build/test/test-compile-model-with-pseudoclosure.d.ts.map +0 -1
  11. package/build/test/test-compile-model-with-pseudoclosure.js +0 -200
  12. package/build/test/test-compile-model-with-pseudoclosure.js.map +0 -1
  13. package/build/test/test-compile-model.d.ts +0 -2
  14. package/build/test/test-compile-model.d.ts.map +0 -1
  15. package/build/test/test-compile-model.js +0 -30
  16. package/build/test/test-compile-model.js.map +0 -1
  17. package/build/test/test-compile-trie.d.ts +0 -2
  18. package/build/test/test-compile-trie.d.ts.map +0 -1
  19. package/build/test/test-compile-trie.js +0 -125
  20. package/build/test/test-compile-trie.js.map +0 -1
  21. package/build/test/test-default-apply-case.d.ts +0 -2
  22. package/build/test/test-default-apply-case.d.ts.map +0 -1
  23. package/build/test/test-default-apply-case.js +0 -105
  24. package/build/test/test-default-apply-case.js.map +0 -1
  25. package/build/test/test-default-search-term-to-key.d.ts +0 -2
  26. package/build/test/test-default-search-term-to-key.d.ts.map +0 -1
  27. package/build/test/test-default-search-term-to-key.js +0 -148
  28. package/build/test/test-default-search-term-to-key.js.map +0 -1
  29. package/build/test/test-error-logger.d.ts +0 -2
  30. package/build/test/test-error-logger.d.ts.map +0 -1
  31. package/build/test/test-error-logger.js +0 -26
  32. package/build/test/test-error-logger.js.map +0 -1
  33. package/build/test/test-join-word-breaker.d.ts +0 -2
  34. package/build/test/test-join-word-breaker.d.ts.map +0 -1
  35. package/build/test/test-join-word-breaker.js +0 -84
  36. package/build/test/test-join-word-breaker.js.map +0 -1
  37. package/build/test/test-model-definitions.d.ts +0 -2
  38. package/build/test/test-model-definitions.d.ts.map +0 -1
  39. package/build/test/test-model-definitions.js +0 -165
  40. package/build/test/test-model-definitions.js.map +0 -1
  41. package/build/test/test-override-script-defaults.d.ts +0 -2
  42. package/build/test/test-override-script-defaults.d.ts.map +0 -1
  43. package/build/test/test-override-script-defaults.js +0 -28
  44. package/build/test/test-override-script-defaults.js.map +0 -1
  45. package/build/test/test-parse-wordlist.d.ts +0 -2
  46. package/build/test/test-parse-wordlist.d.ts.map +0 -1
  47. package/build/test/test-parse-wordlist.js +0 -110
  48. package/build/test/test-parse-wordlist.js.map +0 -1
  49. package/build/test/test-punctuation.d.ts +0 -2
  50. package/build/test/test-punctuation.d.ts.map +0 -1
  51. package/build/test/test-punctuation.js +0 -31
  52. package/build/test/test-punctuation.js.map +0 -1
  53. package/build/test/tsconfig.tsbuildinfo +0 -1
  54. package/build/test/wordbreakers/data.d.ts +0 -35
  55. package/build/test/wordbreakers/data.d.ts.map +0 -1
  56. package/build/test/wordbreakers/data.js +0 -1778
  57. package/build/test/wordbreakers/data.js.map +0 -1
  58. package/build/test/wordbreakers/default-wordbreaker-esm.d.ts +0 -10
  59. package/build/test/wordbreakers/default-wordbreaker-esm.d.ts.map +0 -1
  60. package/build/test/wordbreakers/default-wordbreaker-esm.js +0 -354
  61. package/build/test/wordbreakers/default-wordbreaker-esm.js.map +0 -1
  62. package/build/tsconfig.tsbuildinfo +0 -1
  63. package/build.sh +0 -73
  64. package/coverage/lcov-report/base.css +0 -224
  65. package/coverage/lcov-report/block-navigation.js +0 -87
  66. package/coverage/lcov-report/favicon.png +0 -0
  67. package/coverage/lcov-report/index.html +0 -161
  68. package/coverage/lcov-report/prettify.css +0 -1
  69. package/coverage/lcov-report/prettify.js +0 -2
  70. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  71. package/coverage/lcov-report/sorter.js +0 -196
  72. package/coverage/lcov-report/src/build-trie.ts.html +0 -1618
  73. package/coverage/lcov-report/src/index.html +0 -221
  74. package/coverage/lcov-report/src/join-word-breaker-decorator.ts.html +0 -487
  75. package/coverage/lcov-report/src/lexical-model-compiler.ts.html +0 -622
  76. package/coverage/lcov-report/src/main.ts.html +0 -271
  77. package/coverage/lcov-report/src/model-compiler-errors.ts.html +0 -691
  78. package/coverage/lcov-report/src/model-defaults.ts.html +0 -415
  79. package/coverage/lcov-report/src/model-definitions.ts.html +0 -748
  80. package/coverage/lcov-report/src/script-overrides-decorator.ts.html +0 -310
  81. package/coverage/lcov-report/test/helpers/index.html +0 -116
  82. package/coverage/lcov-report/test/helpers/index.ts.html +0 -646
  83. package/coverage/lcov-report/test/index.html +0 -266
  84. package/coverage/lcov-report/test/test-compile-model-with-pseudoclosure.ts.html +0 -802
  85. package/coverage/lcov-report/test/test-compile-model.ts.html +0 -187
  86. package/coverage/lcov-report/test/test-compile-trie.ts.html +0 -541
  87. package/coverage/lcov-report/test/test-default-apply-case.ts.html +0 -466
  88. package/coverage/lcov-report/test/test-default-search-term-to-key.ts.html +0 -628
  89. package/coverage/lcov-report/test/test-error-logger.ts.html +0 -196
  90. package/coverage/lcov-report/test/test-join-word-breaker.ts.html +0 -376
  91. package/coverage/lcov-report/test/test-model-definitions.ts.html +0 -676
  92. package/coverage/lcov-report/test/test-override-script-defaults.ts.html +0 -184
  93. package/coverage/lcov-report/test/test-parse-wordlist.ts.html +0 -466
  94. package/coverage/lcov-report/test/test-punctuation.ts.html +0 -190
  95. package/coverage/lcov-report/test/wordbreakers/data.ts.html +0 -5413
  96. package/coverage/lcov-report/test/wordbreakers/default-wordbreaker-esm.ts.html +0 -1234
  97. package/coverage/lcov-report/test/wordbreakers/index.html +0 -131
  98. package/coverage/lcov.info +0 -5969
  99. package/src/build-trie.ts +0 -511
  100. package/src/join-word-breaker-decorator.ts +0 -134
  101. package/src/lexical-model-compiler.ts +0 -179
  102. package/src/lexical-model.ts +0 -150
  103. package/src/main.ts +0 -62
  104. package/src/model-compiler-errors.ts +0 -203
  105. package/src/model-defaults.ts +0 -111
  106. package/src/model-definitions.ts +0 -222
  107. package/src/script-overrides-decorator.ts +0 -75
  108. package/test/README.md +0 -15
  109. package/test/fixtures/example.qaa.joinwordbreaker/example.qaa.joinwordbreaker.model.ts +0 -10
  110. package/test/fixtures/example.qaa.joinwordbreaker/wordlist.tsv +0 -3
  111. package/test/fixtures/example.qaa.scriptusesspaces/example.qaa.scriptusesspaces.model.ts +0 -10
  112. package/test/fixtures/example.qaa.scriptusesspaces/wordlist.tsv +0 -8
  113. package/test/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kmp.json +0 -45
  114. package/test/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kps +0 -35
  115. package/test/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.ts +0 -6
  116. package/test/fixtures/example.qaa.sencoten/wordlist.tsv +0 -10
  117. package/test/fixtures/example.qaa.smp/example.qaa.smp.model.ts +0 -6
  118. package/test/fixtures/example.qaa.smp/wordlist.tsv +0 -5
  119. package/test/fixtures/example.qaa.trivial/example.qaa.trivial.model.ts +0 -5
  120. package/test/fixtures/example.qaa.trivial/wordlist.tsv +0 -3
  121. package/test/fixtures/example.qaa.utf16be/example.qaa.utf16be.model.ts +0 -5
  122. package/test/fixtures/example.qaa.utf16be/wordlist.txt +0 -0
  123. package/test/fixtures/example.qaa.utf16le/example.qaa.utf16le.model.ts +0 -5
  124. package/test/fixtures/example.qaa.utf16le/wordlist.txt +0 -0
  125. package/test/fixtures/example.qaa.wordbreaker/example.qaa.wordbreaker.model.ts +0 -9
  126. package/test/fixtures/example.qaa.wordbreaker/wordlist.tsv +0 -3
  127. package/test/helpers/index.ts +0 -187
  128. package/test/test-compile-model-with-pseudoclosure.ts +0 -239
  129. package/test/test-compile-model.ts +0 -34
  130. package/test/test-compile-trie.ts +0 -152
  131. package/test/test-default-apply-case.ts +0 -128
  132. package/test/test-default-search-term-to-key.ts +0 -181
  133. package/test/test-error-logger.ts +0 -38
  134. package/test/test-join-word-breaker.ts +0 -97
  135. package/test/test-model-definitions.ts +0 -198
  136. package/test/test-override-script-defaults.ts +0 -33
  137. package/test/test-parse-wordlist.ts +0 -127
  138. package/test/test-punctuation.ts +0 -35
  139. package/test/tsconfig.json +0 -22
  140. package/test/wordbreakers/README.md +0 -3
  141. package/test/wordbreakers/data.ts +0 -1776
  142. package/test/wordbreakers/default-wordbreaker-esm.ts +0 -383
  143. package/tools/create-override-script-regexp.ts +0 -145
  144. package/tsconfig.json +0 -17
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-compile-trie.js","sourceRoot":"","sources":["../../test/test-compile-trie.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import 'mocha';
2
- //# sourceMappingURL=test-default-apply-case.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-default-apply-case.d.ts","sourceRoot":"","sources":["../../test/test-default-apply-case.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"}
@@ -1,105 +0,0 @@
1
- import 'mocha';
2
- import { assert } from 'chai';
3
- import { defaultApplyCasing } from '../src/model-defaults.js';
4
- describe('The default applyCasing() function', function () {
5
- // // --------
6
- // // Definitions toward SMP testing.
7
- // // Ref: https://unicode.org/charts/nameslist/n_1D400.html
8
- // // Useful for tests related to strings with supplementary pairs.
9
- // let u = function(code: number): string {
10
- // var H = Math.floor((code - 0x10000) / 0x400) + 0xD800;
11
- // var L = (code - 0x10000) % 0x400 + 0xDC00;
12
- // return String.fromCharCode(H, L);
13
- // }
14
- // Are there any known default-handled SMP cases?
15
- // If not... we could make the defaultApplyCase function simpler by not worrying about SMP.
16
- //
17
- // let smp_a = u(0x1d5ba); // MATHEMATICAL SANS-SERIF SMALL A
18
- // let smp_p = u(0x1d5c9);
19
- // let smp_l = u(0x1d5c5);
20
- // let smp_e = u(0x1d5be);
21
- // let smp_A = u(0x1d5a0); // MATHEMATICAL SANS_SERIF CAPITAL A
22
- // let smp_P = u(0x1d5af);
23
- // let smp_L = u(0x1d5ab);
24
- // let smp_E = u(0x1d5a4);
25
- // // Unfortunately... the default JS .toUpperCase() implementation doesn't actually
26
- // // map the 'SMALL' versions to the 'CAPITAL' versions.
27
- // // ---------
28
- describe('case: \'lower\'', function () {
29
- const testCases = [
30
- // Note: not written the Turkish way. Turns out 'İ'.toLowerCase() decomposes the result,
31
- // which would have made for a fairly yucky test.
32
- ['Istanbul', 'istanbul'],
33
- // The DEFAULT function is NOT responsible for understanding the Turkish
34
- // case regarding the lowercasing of:
35
- // 'I' U+0048 LATIN CAPITAL LETTER I to 'ı' U+0131 LATIN SMALL LETTER DOTLESS I
36
- // For Turkic languages, the recommendation is to make a
37
- // custom applyCasing function:
38
- ['DİYARBAKIR', 'di̇yarbakir'],
39
- // full-width romaji has corresponding capitalized versions:
40
- ['AESTHETIC', 'aesthetic'],
41
- // "skýlos" is Greek for dog 🇬🇷🐶
42
- // starts with an 's' and ends with an 's'
43
- // which are DIFFERENT CHARACTERS in lowercased Greek!
44
- ['ΣΚΥΛΟΣ', 'σκυλος'],
45
- // Uncased syntax and numbers should pass through unscathed:
46
- ['1234.?!', '1234.?!']
47
- ];
48
- for (let [input, expected] of testCases) {
49
- it(`should lowercase '${input}' as '${expected}'`, function () {
50
- assert.equal(defaultApplyCasing('lower', input), expected);
51
- });
52
- }
53
- });
54
- describe('case: \'upper\'', function () {
55
- const testCases = [
56
- // Inverse of the corresponding 'lower' test.
57
- ['istanbul', 'ISTANBUL'],
58
- // The DEFAULT function is NOT responsible for understanding the Turkish
59
- // case regarding the uppercasing of:
60
- // 'ı' U+0131 LATIN SMALL LETTER DOTLESS I to 'I' U+0048 LATIN CAPITAL LETTER I
61
- // For Turkic languages, the recommendation is to make a
62
- // custom applyCasing function:
63
- ['diyarbakır', 'DIYARBAKIR'],
64
- // full-width romaji has corresponding capitalized versions:
65
- ['aesthetic', 'AESTHETIC'],
66
- // "skýlos" is Greek for dog 🇬🇷🐶
67
- // starts with an 's' and ends with an 's'
68
- // which are DIFFERENT CHARACTERS in lowercased Greek!
69
- ['σκυλος', 'ΣΚΥΛΟΣ'],
70
- // Uncased syntax and numbers should pass through unscathed:
71
- ['1234.?!', '1234.?!']
72
- ];
73
- for (let [input, expected] of testCases) {
74
- it(`should uppercase '${input}' as '${expected}'`, function () {
75
- assert.equal(defaultApplyCasing('upper', input), expected);
76
- });
77
- }
78
- });
79
- describe('case: \'initial\'', function () {
80
- const testCases = [
81
- // Inverse of the corresponding 'lower' test.
82
- ['istanbul', 'Istanbul'],
83
- // The DEFAULT function is NOT responsible for understanding the Turkish
84
- // case regarding the uppercasing of:
85
- // 'ı' U+0131 LATIN SMALL LETTER DOTLESS I to 'I' U+0048 LATIN CAPITAL LETTER I
86
- // For Turkic languages, the recommendation is to make a
87
- // custom applyCasing function:
88
- ['diyarbakır', 'Diyarbakır'],
89
- // full-width romaji has corresponding capitalized versions:
90
- ['aesthetic', 'Aesthetic'],
91
- // "skýlos" is Greek for dog 🇬🇷🐶
92
- // starts with an 's' and ends with an 's'
93
- // which are DIFFERENT CHARACTERS in lowercased Greek!
94
- ['σκυλος', 'Σκυλος'],
95
- // Uncased syntax and numbers should pass through unscathed:
96
- ['1234.?!', '1234.?!']
97
- ];
98
- for (let [input, expected] of testCases) {
99
- it(`should initial-case '${input}' as '${expected}'`, function () {
100
- assert.equal(defaultApplyCasing('initial', input), expected);
101
- });
102
- }
103
- });
104
- });
105
- //# sourceMappingURL=test-default-apply-case.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-default-apply-case.js","sourceRoot":"","sources":["../../test/test-default-apply-case.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import 'mocha';
2
- //# sourceMappingURL=test-default-search-term-to-key.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-default-search-term-to-key.d.ts","sourceRoot":"","sources":["../../test/test-default-search-term-to-key.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"}
@@ -1,148 +0,0 @@
1
- import 'mocha';
2
- import { assert } from 'chai';
3
- import { defaultSearchTermToKey, defaultCasedSearchTermToKey, defaultApplyCasing } from '../src/model-defaults.js';
4
- describe('The default searchTermToKey() function', function () {
5
- describe('languageUsesCasing: false', function () {
6
- const testCases = [
7
- // "İstanbul" has a U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE.
8
- // Without any casing operations, only the I should be altered.
9
- ['İstanbul', 'Istanbul'],
10
- // Similarly...
11
- ['DİYARBAKIR', 'DIYARBAKIR'],
12
- // "skýlos" is Greek for dog 🇬🇷🐶
13
- // starts with an 's' and ends with an 's'
14
- // which are DIFFERENT CHARACTERS in lowercased Greek!
15
- ['σκύλος', 'σκυλος'],
16
- ['ΣΚΥΛΟΣ', 'ΣΚΥΛΟΣ'],
17
- // full-width romaji is compatibility-canonical with ASCII characters:
18
- ['aesthetic', 'aesthetic'],
19
- // U+212B ANGSTROM SIGN (Å)
20
- // U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE (Å)
21
- // and should both normalize to 'A'
22
- ['\u212B', 'A'],
23
- ['\u00C5', 'A'],
24
- // We should not fall for U+037E GREEK QUESTION MARK's trolling:
25
- ['\u037e', ';'],
26
- // Test presentational forms of Arabic:
27
- // U+FE8D ARABIC LETTER ALEF ISOLATED FORM -> U+0627 ARABIC LETTER ALEF
28
- // U+FEDF ARABIC LETTER LAM INITIAL FORM -> U+0644 ARABIC LETTER LAM
29
- // U+FED8 ARABIC LETTER QAF MEDIAL FORM -> U+0642 ARABIC LETTER QAF
30
- // U+FEEC ARABIC LETTER HEH MEDIAL FORM -> U+0647 ARABIC LETTER HEH
31
- // U+FEEE ARABIC LETTER WAW FINAL FORM -> U+0648 ARABIC LETTER WAW
32
- // U+FE93 ARABIC LETTER TEH MARBUTA ISOLATED FORM -> U+0629 ARABIC LETTER TEH MARBUTA
33
- ['\uFE8D\uFEDF\uFED8\uFEEC\uFEEE\uFE93', '\u0627\u0644\u0642\u0647\u0648\u0629'],
34
- // Combine both NFKD **AND** knocking off diacritics:
35
- // U+01C4 LATIN CAPITAL LETTER DZ WITH CARON (DŽ) -> <U+0064, U+007A> (dz)
36
- ['DŽ', 'DZ'],
37
- ];
38
- for (let [input, expected] of testCases) {
39
- it(`should normalize '${input}' to '${expected}'`, function () {
40
- assert.equal(defaultSearchTermToKey(input), expected);
41
- });
42
- }
43
- });
44
- describe('languageUsesCasing: true (custom applyCasing, inverts lower- & upper- casing)', function () {
45
- const testCases = [
46
- // The DEFAULT function is NOT responsible for understanding the Turkish
47
- // distinction between U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE and
48
- // 'I' U+0048 LATIN CAPITAL LETTER I.
49
- // For Turkic languages, the recommendation is thus to make a
50
- // custom searchTermToKey function.
51
- ['İstanbul', 'ISTANBUL'],
52
- ['DİYARBAKIR', 'DIYARBAKIR'],
53
- // "skýlos" is Greek for dog 🇬🇷🐶
54
- // starts with an 's' and ends with an 's'
55
- // which are DIFFERENT CHARACTERS in lowercased Greek!
56
- ['σκύλος', 'ΣΚΥΛΟΣ'],
57
- ['σκυλοσ', 'ΣΚΥΛΟΣ'],
58
- // full-width romaji is compatibility-canonical with ASCII characters:
59
- ['aesthetic', 'AESTHETIC'],
60
- // U+212B ANGSTROM SIGN (Å)
61
- // U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE (Å)
62
- // and should both normalize to 'a'
63
- ['\u212B', 'A'],
64
- ['\u00C5', 'A'],
65
- // We should not fall for U+037E GREEK QUESTION MARK's trolling:
66
- ['\u037e', ';'],
67
- // Test presentational forms of Arabic:
68
- // U+FE8D ARABIC LETTER ALEF ISOLATED FORM -> U+0627 ARABIC LETTER ALEF
69
- // U+FEDF ARABIC LETTER LAM INITIAL FORM -> U+0644 ARABIC LETTER LAM
70
- // U+FED8 ARABIC LETTER QAF MEDIAL FORM -> U+0642 ARABIC LETTER QAF
71
- // U+FEEC ARABIC LETTER HEH MEDIAL FORM -> U+0647 ARABIC LETTER HEH
72
- // U+FEEE ARABIC LETTER WAW FINAL FORM -> U+0648 ARABIC LETTER WAW
73
- // U+FE93 ARABIC LETTER TEH MARBUTA ISOLATED FORM -> U+0629 ARABIC LETTER TEH MARBUTA
74
- ['\uFE8D\uFEDF\uFED8\uFEEC\uFEEE\uFE93', '\u0627\u0644\u0642\u0647\u0648\u0629'],
75
- // Combine both NFKD **AND** knocking off diacritics:
76
- // U+01C4 LATIN CAPITAL LETTER DZ WITH CARON (DŽ) -> <U+0064, U+007A> (dz)
77
- ['DŽ', 'DZ'],
78
- ];
79
- // While a Turkish-based test would be nice, Turkish needs custom keying,
80
- // as U+0130's default handling is... not ideal in Turkish.
81
- //
82
- // Instead, we can get a simple-enough test with inverted casing.
83
- let customCasing = function (caseToApply, text, defaultApplyCasing) {
84
- switch (caseToApply) {
85
- case 'lower':
86
- return text.toUpperCase();
87
- case 'upper':
88
- return text.toLowerCase();
89
- case 'initial':
90
- return customCasing('upper', text.charAt(0), defaultApplyCasing) + text.substr(1);
91
- default:
92
- return text;
93
- }
94
- };
95
- let customCasingClosure = function (caseToApply, text) {
96
- return customCasing(caseToApply, text, defaultApplyCasing);
97
- };
98
- for (let [input, expected] of testCases) {
99
- it(`should normalize '${input}' to '${expected}'`, function () {
100
- assert.equal(defaultCasedSearchTermToKey(input, customCasingClosure), expected);
101
- });
102
- }
103
- });
104
- describe('languageUsesCasing: undefined (legacy 12.0 / 13.0 mode, uses `defaultApplyCasing`)', function () {
105
- const testCases = [
106
- // "İstanbul" has a U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE.
107
- // This should be lowercased.
108
- ['İstanbul', 'istanbul'],
109
- // The DEFAULT function is NOT responsible for understanding the Turkish
110
- // case regarding the lowercasing of:
111
- // 'I' U+0048 LATIN CAPITAL LETTER I to 'ı' U+0131 LATIN SMALL LETTER DOTLESS I
112
- // For Turkic languages, the recommendation is to make a
113
- // custom searchTermToKey function:
114
- ['DİYARBAKIR', 'diyarbakir'],
115
- // "skýlos" is Greek for dog 🇬🇷🐶
116
- // starts with an 's' and ends with an 's'
117
- // which are DIFFERENT CHARACTERS in lowercased Greek!
118
- ['σκύλος', 'σκυλος'],
119
- ['ΣΚΥΛΟΣ', 'σκυλοσ'],
120
- // full-width romaji is compatibility-canonical with ASCII characters:
121
- ['aesthetic', 'aesthetic'],
122
- // U+212B ANGSTROM SIGN (Å)
123
- // U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE (Å)
124
- // and should both normalize to 'a'
125
- ['\u212B', 'a'],
126
- ['\u00C5', 'a'],
127
- // We should not fall for U+037E GREEK QUESTION MARK's trolling:
128
- ['\u037e', ';'],
129
- // Test presentational forms of Arabic:
130
- // U+FE8D ARABIC LETTER ALEF ISOLATED FORM -> U+0627 ARABIC LETTER ALEF
131
- // U+FEDF ARABIC LETTER LAM INITIAL FORM -> U+0644 ARABIC LETTER LAM
132
- // U+FED8 ARABIC LETTER QAF MEDIAL FORM -> U+0642 ARABIC LETTER QAF
133
- // U+FEEC ARABIC LETTER HEH MEDIAL FORM -> U+0647 ARABIC LETTER HEH
134
- // U+FEEE ARABIC LETTER WAW FINAL FORM -> U+0648 ARABIC LETTER WAW
135
- // U+FE93 ARABIC LETTER TEH MARBUTA ISOLATED FORM -> U+0629 ARABIC LETTER TEH MARBUTA
136
- ['\uFE8D\uFEDF\uFED8\uFEEC\uFEEE\uFE93', '\u0627\u0644\u0642\u0647\u0648\u0629'],
137
- // Combine both NFKD **AND** knocking off diacritics:
138
- // U+01C4 LATIN CAPITAL LETTER DZ WITH CARON (DŽ) -> <U+0064, U+007A> (dz)
139
- ['DŽ', 'dz'],
140
- ];
141
- for (let [input, expected] of testCases) {
142
- it(`should normalize '${input}' to '${expected}'`, function () {
143
- assert.equal(defaultCasedSearchTermToKey(input, defaultApplyCasing), expected);
144
- });
145
- }
146
- });
147
- });
148
- //# sourceMappingURL=test-default-search-term-to-key.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-default-search-term-to-key.js","sourceRoot":"","sources":["../../test/test-default-search-term-to-key.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-error-logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-error-logger.d.ts","sourceRoot":"","sources":["../../test/test-error-logger.ts"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- import { MAX_MESSAGES, KeymanCompilerError, log } from "../src/model-compiler-errors.js";
2
- import { LogHoarder } from "./helpers/index.js";
3
- import { assert } from "chai";
4
- describe('error logger', function () {
5
- beforeEach(function () {
6
- this.logHoarder = (new LogHoarder).install();
7
- });
8
- afterEach(function () {
9
- this.logHoarder.uninstall();
10
- delete this.logHoarder;
11
- });
12
- it('should stop logging messages **after** a maximum', function () {
13
- for (let i = 0; i < MAX_MESSAGES; i++) {
14
- log(KeymanCompilerError.CWARN_DuplicateWordInSameFile, "fake error");
15
- }
16
- // We've logged *just enough messages. This error should not be found:
17
- assert.isFalse(this.logHoarder.hasSeenCode(KeymanCompilerError.CWARN_TooManyErrorsOrWarnings));
18
- // Log just one too many:
19
- log(KeymanCompilerError.CWARN_DuplicateWordInSameFile, "fake error");
20
- assert.isTrue(this.logHoarder.hasSeenCode(KeymanCompilerError.CWARN_TooManyErrorsOrWarnings));
21
- // Log a DIFFERENT error -- it should not appear in the log
22
- log(KeymanCompilerError.CWARN_MixedNormalizationForms, "fake error");
23
- assert.isFalse(this.logHoarder.hasSeenCode(KeymanCompilerError.CWARN_MixedNormalizationForms));
24
- });
25
- });
26
- //# sourceMappingURL=test-error-logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-error-logger.js","sourceRoot":"","sources":["../../test/test-error-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,QAAQ,CAAC,cAAc,EAAE;IACvB,UAAU,CAAC;QACT,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,OAAO,EAAE,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC;QACR,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACrC,GAAG,CAAC,mBAAmB,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;SACtE;QAED,sEAAsE;QACtE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CACxC,mBAAmB,CAAC,6BAA6B,CAClD,CAAC,CAAC;QAEH,yBAAyB;QACzB,GAAG,CAAC,mBAAmB,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;QAErE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CACvC,mBAAmB,CAAC,6BAA6B,CAClD,CAAC,CAAC;QAEH,2DAA2D;QAC3D,GAAG,CAAC,mBAAmB,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CACxC,mBAAmB,CAAC,6BAA6B,CAClD,CAAC,CAAC;IACL,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-join-word-breaker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-join-word-breaker.d.ts","sourceRoot":"","sources":["../../test/test-join-word-breaker.ts"],"names":[],"mappings":""}
@@ -1,84 +0,0 @@
1
- import { assert } from "chai";
2
- import defaultWordBreaker from './wordbreakers/default-wordbreaker-esm.js';
3
- import { decorateWithJoin } from '../src/join-word-breaker-decorator.js';
4
- describe('The join word breaker decorator', function () {
5
- it('should decorate an existing word breaker', function () {
6
- let breakWords = decorateWithJoin(defaultWordBreaker, ['-']);
7
- assert.isFunction(breakWords);
8
- });
9
- const TEST_CASES = [
10
- /* input, joiners, default breaks, breaks with joins */
11
- // Original test case from https://github.com/keymanapp/keyman/issues/2753
12
- ['khui-chhùi', ['-'], ["khui", "-", "chhùi"], ["khui-chhùi"]],
13
- // Plains Cree SRO:
14
- ['ê-kotiskâwêyâhk', ['-'], ['ê', '-', 'kotiskâwêyâhk'], ['ê-kotiskâwêyâhk']],
15
- // Edge cases:
16
- // Joiner alone:
17
- ['-', ['-'], ['-'], ['-']],
18
- // Joiner at the end:
19
- ['ni-', ['-'], ['ni', '-'], ['ni-']],
20
- // Joiner at the end:
21
- ['-ân', ['-'], ['-', 'ân'], ['-ân']],
22
- // This was my guiding test case:
23
- [
24
- "-yâhk ê-nitawi-kotiskâwêyâhk ni-",
25
- ["-"],
26
- ["-", "yâhk", "ê", "-", "nitawi", "-", "kotiskâwêyâhk", "ni", "-"],
27
- ["-yâhk", "ê-nitawi-kotiskâwêyâhk", "ni-"]
28
- ],
29
- // Do not perform any joins:
30
- ["hello world", ["-"], ["hello", "world"], ["hello", "world"]],
31
- // Joining using multiple joiners
32
- [
33
- "Email: no-body@example.com",
34
- ["@", "-"],
35
- ["Email", ":", "no", "-", "body", "@", "example.com"],
36
- ["Email", ":", "no-body@example.com"]
37
- ],
38
- // Joining with two or more joiners in a row
39
- [
40
- "nobody@@example.com",
41
- ["@"],
42
- ["nobody", "@", "@", "example.com"],
43
- ["nobody@@example.com"]
44
- ],
45
- // it should NOT join non-contiguous spans:
46
- [
47
- "this- is -bad",
48
- ["-"],
49
- ["this", "-", "is", "-", "bad"],
50
- ["this-", "is", "-bad"]
51
- ],
52
- // different but adjacent joiners
53
- [
54
- "I made the kawé:-conjugator.",
55
- ["-", ":"],
56
- ["I", "made", "the", "kawé", ":", "-", "conjugator", "."],
57
- ["I", "made", "the", "kawé:-conjugator", "."]
58
- ],
59
- // 3+ joiners in a row
60
- [
61
- // NB: – is U+2001 EN DASH
62
- "This language is nut–=💠¤~ty!",
63
- ["~", "–", "¤", "=", "💠"],
64
- ["This", "language", "is", "nut", "–", "=", "💠", "¤", "~", "ty", "!"],
65
- ["This", "language", "is", "nut–=💠¤~ty", "!"],
66
- ],
67
- ];
68
- for (let [phrase, joiners, unjoined, expected] of TEST_CASES) {
69
- it(`should break «${[phrase]}» as [${expected.join(' ;; ')}]`, function () {
70
- let breakWords = decorateWithJoin(defaultWordBreaker, joiners);
71
- let unjoinedResult = defaultWordBreaker(phrase).map(onlyText);
72
- assert.deepEqual(unjoinedResult, unjoined);
73
- let actualResult = breakWords(phrase).map(onlyText);
74
- assert.deepEqual(actualResult, expected);
75
- });
76
- }
77
- /**
78
- * Get just the text from a span.
79
- */
80
- function onlyText(span) {
81
- return span.text;
82
- }
83
- });
84
- //# sourceMappingURL=test-join-word-breaker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-join-word-breaker.js","sourceRoot":"","sources":["../../test/test-join-word-breaker.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import 'mocha';
2
- //# sourceMappingURL=test-model-definitions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-model-definitions.d.ts","sourceRoot":"","sources":["../../test/test-model-definitions.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC"}
@@ -1,165 +0,0 @@
1
- import 'mocha';
2
- import { assert } from 'chai';
3
- import { ModelDefinitions } from '../src/model-definitions.js';
4
- describe('Model definition pseudoclosures', function () {
5
- describe('14.0 defaults', function () {
6
- describe('languageUsesCasing == true', function () {
7
- // We don't need a complete spec for this, given the (currently) limited range of what
8
- // the ModelPseudoclosure covers.
9
- let modelSource = {
10
- languageUsesCasing: true,
11
- sources: [],
12
- format: 'trie-1.0'
13
- };
14
- let pseudoclosure = new ModelDefinitions(modelSource);
15
- const testCases = [
16
- // Note: not written the Turkish way. Turns out 'İ'.toLowerCase() decomposes the result,
17
- // which would have made for a fairly yucky test.
18
- ['Istanbul', 'istanbul', 'istanbul'],
19
- // The DEFAULT function is NOT responsible for understanding the Turkish
20
- // case regarding the lowercasing of:
21
- // 'I' U+0048 LATIN CAPITAL LETTER I to 'ı' U+0131 LATIN SMALL LETTER DOTLESS I
22
- // For Turkic languages, the recommendation is to make a
23
- // custom applyCasing function:
24
- ['DİYARBAKIR', 'di̇yarbakir', 'diyarbakir'],
25
- // full-width romaji has corresponding lowercased versions:
26
- ['AESTHETIC', 'aesthetic', 'aesthetic'],
27
- // "skýlos" is Greek for dog 🇬🇷🐶
28
- // starts with an 's' and ends with an 's'
29
- // which are DIFFERENT CHARACTERS in lowercased Greek!
30
- ['σκύλος', 'σκύλος', 'σκυλος'],
31
- ['ΣΚΥΛΟΣ', 'σκυλος', 'σκυλοσ'],
32
- // to make the distinction. Both 'Σ's have the same char-code.
33
- // Uncased syntax and numbers should pass through unscathed:
34
- ['1234.?!', '1234.?!', '1234.?!'],
35
- ['”', '”', '"'],
36
- ["‘", "‘", "'"]
37
- ];
38
- for (let [input, cased, keyed] of testCases) {
39
- it(`should case '${input}' as '${cased}'`, function () {
40
- assert.equal(pseudoclosure.applyCasing('lower', input), cased);
41
- });
42
- it(`should key '${input}' as '${keyed}'`, function () {
43
- assert.equal(pseudoclosure.searchTermToKey(input), keyed);
44
- });
45
- }
46
- });
47
- describe('languageUsesCasing == false', function () {
48
- // We don't need a complete spec for this, given the (currently) limited range of what
49
- // the ModelPseudoclosure covers.
50
- let modelSource = {
51
- languageUsesCasing: false,
52
- sources: [],
53
- format: 'trie-1.0'
54
- };
55
- let pseudoclosure = new ModelDefinitions(modelSource);
56
- const testCases = [
57
- // Note: not written the Turkish way. Turns out 'İ'.toLowerCase() decomposes the result,
58
- // which would have made for a fairly yucky test.
59
- ['Istanbul', 'Istanbul'],
60
- ['DİYARBAKIR', 'DIYARBAKIR'],
61
- // full-width romaji has corresponding capitalized versions:
62
- ['AESTHETIC', 'AESTHETIC'],
63
- // "skýlos" is Greek for dog 🇬🇷🐶
64
- // starts with an 's' and ends with an 's'
65
- // which are DIFFERENT CHARACTERS in lowercased Greek!
66
- ['σκύλος', 'σκυλος'],
67
- ['ΣΚΥΛΟΣ', 'ΣΚΥΛΟΣ'],
68
- // to make the distinction. Both 'Σ's have the same char-code.
69
- // Uncased syntax and numbers should pass through unscathed:
70
- ['1234.?!', '1234.?!'],
71
- ['”', '"'],
72
- ["‘", "'"]
73
- ];
74
- for (let [input, keyed] of testCases) {
75
- it(`should key '${input}' as '${keyed}'`, function () {
76
- assert.equal(pseudoclosure.searchTermToKey(input), keyed);
77
- });
78
- }
79
- });
80
- });
81
- describe('Pre 14.0 defaults (languageUsesCasing == undefined)', function () {
82
- // We don't need a complete spec for this, given the (currently) limited range of what
83
- // the ModelPseudoclosure covers.
84
- let modelSource = {
85
- sources: [],
86
- format: 'trie-1.0'
87
- };
88
- let pseudoclosure = new ModelDefinitions(modelSource);
89
- const testCases = [
90
- // Note: not written the Turkish way. Turns out 'İ'.toLowerCase() decomposes the result,
91
- // which would have made for a fairly yucky test.
92
- ['Istanbul', 'istanbul'],
93
- ['DİYARBAKIR', 'diyarbakir'],
94
- // full-width romaji has corresponding capitalized versions:
95
- ['AESTHETIC', 'aesthetic'],
96
- // "skýlos" is Greek for dog 🇬🇷🐶
97
- // starts with an 's' and ends with an 's'
98
- // which are DIFFERENT CHARACTERS in lowercased Greek!
99
- ['σκύλος', 'σκυλος'],
100
- ['ΣΚΥΛΟΣ', 'σκυλοσ'],
101
- // to make the distinction. Both 'Σ's have the same char-code.
102
- // Uncased syntax and numbers should pass through unscathed:
103
- ['1234.?!', '1234.?!']
104
- ];
105
- for (let [input, keyed] of testCases) {
106
- it(`should key '${input}' as '${keyed}'`, function () {
107
- assert.equal(pseudoclosure.searchTermToKey(input), keyed);
108
- });
109
- }
110
- });
111
- describe('Model-defined applyCasing + (dependent) searchTermToKey', function () {
112
- // Note: this test only implements enough Turkish-related stuff to facilitate
113
- // a functional test. Not guaranteed to be sufficient for actual Turkish use.
114
- let turkishCasing = function (form, text, defaultApplyCasing) {
115
- switch (form) {
116
- case 'lower':
117
- return defaultApplyCasing(form, text
118
- .replace(/I/g, 'ı')
119
- .replace(/İ/g, 'i'));
120
- case 'upper':
121
- return defaultApplyCasing(form, text
122
- .replace(/ı/g, 'I')
123
- .replace(/i/g, 'İ'));
124
- case 'initial':
125
- return turkishCasing('upper', text.charAt(0), defaultApplyCasing) + text.substr(1);
126
- default:
127
- return text;
128
- }
129
- };
130
- let modelSource = {
131
- languageUsesCasing: true,
132
- applyCasing: turkishCasing,
133
- searchTermToKey: function (wordform, applyCasing) {
134
- return Array.from(wordform
135
- .normalize('NFC') // Mostly to avoid decomposing 'İ'
136
- ) // end of `Array.from`
137
- .map(function (c) { return applyCasing('lower', c); }) // Will use custom `applyCasing` definition!
138
- .join('');
139
- },
140
- sources: [],
141
- format: 'trie-1.0'
142
- };
143
- let pseudoclosure = new ModelDefinitions(modelSource);
144
- const testCases = [
145
- ['İstanbul', 'istanbul', 'istanbul'],
146
- // The DEFAULT function is NOT responsible for understanding the Turkish
147
- // case regarding the lowercasing of:
148
- // 'I' U+0048 LATIN CAPITAL LETTER I to 'ı' U+0131 LATIN SMALL LETTER DOTLESS I
149
- // For Turkic languages, the recommendation is to make a
150
- // custom applyCasing function:
151
- ['DİYARBAKIR', 'diyarbakır', 'diyarbakır'],
152
- // Uncased syntax and numbers should pass through unscathed:
153
- ['1234.?!', '1234.?!', '1234.?!']
154
- ];
155
- for (let [input, cased, keyed] of testCases) {
156
- it(`should case '${input}' as '${cased}'`, function () {
157
- assert.equal(pseudoclosure.applyCasing('lower', input), cased);
158
- });
159
- it(`should key '${input}' as '${keyed}'`, function () {
160
- assert.equal(pseudoclosure.searchTermToKey(input), keyed);
161
- });
162
- }
163
- });
164
- });
165
- //# sourceMappingURL=test-model-definitions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-model-definitions.js","sourceRoot":"","sources":["../../test/test-model-definitions.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-override-script-defaults.d.ts.map