@keymanapp/kmc-model 17.0.85-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.
- package/.nyc_output/coverage-10524-1681239236645-0.json +1 -0
- package/Makefile +38 -0
- package/build/cjs-src/lexical-model-compiler.cjs +152688 -0
- package/build/src/build-trie.d.ts +40 -0
- package/build/src/build-trie.d.ts.map +1 -0
- package/build/src/build-trie.js +362 -0
- package/build/src/build-trie.js.map +1 -0
- package/build/src/join-word-breaker-decorator.d.ts +10 -0
- package/build/src/join-word-breaker-decorator.d.ts.map +1 -0
- package/build/src/join-word-breaker-decorator.js +121 -0
- package/build/src/join-word-breaker-decorator.js.map +1 -0
- package/build/src/lexical-model-compiler.d.ts +19 -0
- package/build/src/lexical-model-compiler.d.ts.map +1 -0
- package/build/src/lexical-model-compiler.js +155 -0
- package/build/src/lexical-model-compiler.js.map +1 -0
- package/build/src/lexical-model.d.ts +135 -0
- package/build/src/lexical-model.d.ts.map +1 -0
- package/build/src/lexical-model.js +6 -0
- package/build/src/lexical-model.js.map +1 -0
- package/build/src/main.d.ts +15 -0
- package/build/src/main.d.ts.map +1 -0
- package/build/src/main.js +46 -0
- package/build/src/main.js.map +1 -0
- package/build/src/model-compiler-errors.d.ts +77 -0
- package/build/src/model-compiler-errors.d.ts.map +1 -0
- package/build/src/model-compiler-errors.js +156 -0
- package/build/src/model-compiler-errors.js.map +1 -0
- package/build/src/model-defaults.d.ts +56 -0
- package/build/src/model-defaults.d.ts.map +1 -0
- package/build/src/model-defaults.js +106 -0
- package/build/src/model-defaults.js.map +1 -0
- package/build/src/model-definitions.d.ts +71 -0
- package/build/src/model-definitions.d.ts.map +1 -0
- package/build/src/model-definitions.js +189 -0
- package/build/src/model-definitions.js.map +1 -0
- package/build/src/script-overrides-decorator.d.ts +4 -0
- package/build/src/script-overrides-decorator.d.ts.map +1 -0
- package/build/src/script-overrides-decorator.js +63 -0
- package/build/src/script-overrides-decorator.js.map +1 -0
- package/build/test/helpers/index.d.ts +69 -0
- package/build/test/helpers/index.d.ts.map +1 -0
- package/build/test/helpers/index.js +160 -0
- package/build/test/helpers/index.js.map +1 -0
- package/build/test/test-compile-model-with-pseudoclosure.d.ts +2 -0
- package/build/test/test-compile-model-with-pseudoclosure.d.ts.map +1 -0
- package/build/test/test-compile-model-with-pseudoclosure.js +200 -0
- package/build/test/test-compile-model-with-pseudoclosure.js.map +1 -0
- package/build/test/test-compile-model.d.ts +2 -0
- package/build/test/test-compile-model.d.ts.map +1 -0
- package/build/test/test-compile-model.js +30 -0
- package/build/test/test-compile-model.js.map +1 -0
- package/build/test/test-compile-trie.d.ts +2 -0
- package/build/test/test-compile-trie.d.ts.map +1 -0
- package/build/test/test-compile-trie.js +125 -0
- package/build/test/test-compile-trie.js.map +1 -0
- package/build/test/test-default-apply-case.d.ts +2 -0
- package/build/test/test-default-apply-case.d.ts.map +1 -0
- package/build/test/test-default-apply-case.js +105 -0
- package/build/test/test-default-apply-case.js.map +1 -0
- package/build/test/test-default-search-term-to-key.d.ts +2 -0
- package/build/test/test-default-search-term-to-key.d.ts.map +1 -0
- package/build/test/test-default-search-term-to-key.js +148 -0
- package/build/test/test-default-search-term-to-key.js.map +1 -0
- package/build/test/test-error-logger.d.ts +2 -0
- package/build/test/test-error-logger.d.ts.map +1 -0
- package/build/test/test-error-logger.js +26 -0
- package/build/test/test-error-logger.js.map +1 -0
- package/build/test/test-join-word-breaker.d.ts +2 -0
- package/build/test/test-join-word-breaker.d.ts.map +1 -0
- package/build/test/test-join-word-breaker.js +84 -0
- package/build/test/test-join-word-breaker.js.map +1 -0
- package/build/test/test-model-definitions.d.ts +2 -0
- package/build/test/test-model-definitions.d.ts.map +1 -0
- package/build/test/test-model-definitions.js +165 -0
- package/build/test/test-model-definitions.js.map +1 -0
- package/build/test/test-override-script-defaults.d.ts +2 -0
- package/build/test/test-override-script-defaults.d.ts.map +1 -0
- package/build/test/test-override-script-defaults.js +28 -0
- package/build/test/test-override-script-defaults.js.map +1 -0
- package/build/test/test-parse-wordlist.d.ts +2 -0
- package/build/test/test-parse-wordlist.d.ts.map +1 -0
- package/build/test/test-parse-wordlist.js +110 -0
- package/build/test/test-parse-wordlist.js.map +1 -0
- package/build/test/test-punctuation.d.ts +2 -0
- package/build/test/test-punctuation.d.ts.map +1 -0
- package/build/test/test-punctuation.js +31 -0
- package/build/test/test-punctuation.js.map +1 -0
- package/build/test/tsconfig.tsbuildinfo +1 -0
- package/build/test/wordbreakers/data.d.ts +35 -0
- package/build/test/wordbreakers/data.d.ts.map +1 -0
- package/build/test/wordbreakers/data.js +1778 -0
- package/build/test/wordbreakers/data.js.map +1 -0
- package/build/test/wordbreakers/default-wordbreaker-esm.d.ts +10 -0
- package/build/test/wordbreakers/default-wordbreaker-esm.d.ts.map +1 -0
- package/build/test/wordbreakers/default-wordbreaker-esm.js +354 -0
- package/build/test/wordbreakers/default-wordbreaker-esm.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/build.sh +73 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +161 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov-report/src/build-trie.ts.html +1618 -0
- package/coverage/lcov-report/src/index.html +221 -0
- package/coverage/lcov-report/src/join-word-breaker-decorator.ts.html +487 -0
- package/coverage/lcov-report/src/lexical-model-compiler.ts.html +622 -0
- package/coverage/lcov-report/src/main.ts.html +271 -0
- package/coverage/lcov-report/src/model-compiler-errors.ts.html +691 -0
- package/coverage/lcov-report/src/model-defaults.ts.html +415 -0
- package/coverage/lcov-report/src/model-definitions.ts.html +748 -0
- package/coverage/lcov-report/src/script-overrides-decorator.ts.html +310 -0
- package/coverage/lcov-report/test/helpers/index.html +116 -0
- package/coverage/lcov-report/test/helpers/index.ts.html +646 -0
- package/coverage/lcov-report/test/index.html +266 -0
- package/coverage/lcov-report/test/test-compile-model-with-pseudoclosure.ts.html +802 -0
- package/coverage/lcov-report/test/test-compile-model.ts.html +187 -0
- package/coverage/lcov-report/test/test-compile-trie.ts.html +541 -0
- package/coverage/lcov-report/test/test-default-apply-case.ts.html +466 -0
- package/coverage/lcov-report/test/test-default-search-term-to-key.ts.html +628 -0
- package/coverage/lcov-report/test/test-error-logger.ts.html +196 -0
- package/coverage/lcov-report/test/test-join-word-breaker.ts.html +376 -0
- package/coverage/lcov-report/test/test-model-definitions.ts.html +676 -0
- package/coverage/lcov-report/test/test-override-script-defaults.ts.html +184 -0
- package/coverage/lcov-report/test/test-parse-wordlist.ts.html +466 -0
- package/coverage/lcov-report/test/test-punctuation.ts.html +190 -0
- package/coverage/lcov-report/test/wordbreakers/data.ts.html +5413 -0
- package/coverage/lcov-report/test/wordbreakers/default-wordbreaker-esm.ts.html +1234 -0
- package/coverage/lcov-report/test/wordbreakers/index.html +131 -0
- package/coverage/lcov.info +5969 -0
- package/package.json +61 -0
- package/src/build-trie.ts +511 -0
- package/src/join-word-breaker-decorator.ts +134 -0
- package/src/lexical-model-compiler.ts +179 -0
- package/src/lexical-model.ts +150 -0
- package/src/main.ts +62 -0
- package/src/model-compiler-errors.ts +203 -0
- package/src/model-defaults.ts +111 -0
- package/src/model-definitions.ts +222 -0
- package/src/script-overrides-decorator.ts +75 -0
- package/test/README.md +15 -0
- package/test/fixtures/example.qaa.joinwordbreaker/example.qaa.joinwordbreaker.model.ts +10 -0
- package/test/fixtures/example.qaa.joinwordbreaker/wordlist.tsv +3 -0
- package/test/fixtures/example.qaa.scriptusesspaces/example.qaa.scriptusesspaces.model.ts +10 -0
- package/test/fixtures/example.qaa.scriptusesspaces/wordlist.tsv +8 -0
- package/test/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kmp.json +45 -0
- package/test/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.kps +35 -0
- package/test/fixtures/example.qaa.sencoten/example.qaa.sencoten.model.ts +6 -0
- package/test/fixtures/example.qaa.sencoten/wordlist.tsv +10 -0
- package/test/fixtures/example.qaa.smp/example.qaa.smp.model.ts +6 -0
- package/test/fixtures/example.qaa.smp/wordlist.tsv +5 -0
- package/test/fixtures/example.qaa.trivial/example.qaa.trivial.model.ts +5 -0
- package/test/fixtures/example.qaa.trivial/wordlist.tsv +3 -0
- package/test/fixtures/example.qaa.utf16be/example.qaa.utf16be.model.ts +5 -0
- package/test/fixtures/example.qaa.utf16be/wordlist.txt +0 -0
- package/test/fixtures/example.qaa.utf16le/example.qaa.utf16le.model.ts +5 -0
- package/test/fixtures/example.qaa.utf16le/wordlist.txt +0 -0
- package/test/fixtures/example.qaa.wordbreaker/example.qaa.wordbreaker.model.ts +9 -0
- package/test/fixtures/example.qaa.wordbreaker/wordlist.tsv +3 -0
- package/test/helpers/index.ts +187 -0
- package/test/test-compile-model-with-pseudoclosure.ts +239 -0
- package/test/test-compile-model.ts +34 -0
- package/test/test-compile-trie.ts +152 -0
- package/test/test-default-apply-case.ts +128 -0
- package/test/test-default-search-term-to-key.ts +181 -0
- package/test/test-error-logger.ts +38 -0
- package/test/test-join-word-breaker.ts +97 -0
- package/test/test-model-definitions.ts +198 -0
- package/test/test-override-script-defaults.ts +33 -0
- package/test/test-parse-wordlist.ts +127 -0
- package/test/test-punctuation.ts +35 -0
- package/test/tsconfig.json +22 -0
- package/test/wordbreakers/README.md +3 -0
- package/test/wordbreakers/data.ts +1776 -0
- package/test/wordbreakers/default-wordbreaker-esm.ts +383 -0
- package/tools/create-override-script-regexp.ts +145 -0
- package/tsconfig.json +17 -0
|
@@ -0,0 +1,748 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/model-definitions.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../index.html">All files</a> / <a href="index.html">src</a> model-definitions.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>222/222</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>22/22</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>8/8</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>222/222</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
288
|
+
<span class="cline-any cline-yes">1x</span>
|
|
289
|
+
<span class="cline-any cline-yes">1x</span>
|
|
290
|
+
<span class="cline-any cline-yes">1x</span>
|
|
291
|
+
<span class="cline-any cline-yes">1x</span>
|
|
292
|
+
<span class="cline-any cline-yes">1x</span>
|
|
293
|
+
<span class="cline-any cline-yes">1x</span>
|
|
294
|
+
<span class="cline-any cline-yes">1x</span>
|
|
295
|
+
<span class="cline-any cline-yes">1x</span>
|
|
296
|
+
<span class="cline-any cline-yes">1x</span>
|
|
297
|
+
<span class="cline-any cline-yes">1x</span>
|
|
298
|
+
<span class="cline-any cline-yes">1x</span>
|
|
299
|
+
<span class="cline-any cline-yes">1x</span>
|
|
300
|
+
<span class="cline-any cline-yes">1x</span>
|
|
301
|
+
<span class="cline-any cline-yes">1x</span>
|
|
302
|
+
<span class="cline-any cline-yes">1x</span>
|
|
303
|
+
<span class="cline-any cline-yes">1x</span>
|
|
304
|
+
<span class="cline-any cline-yes">1x</span>
|
|
305
|
+
<span class="cline-any cline-yes">1x</span>
|
|
306
|
+
<span class="cline-any cline-yes">1x</span>
|
|
307
|
+
<span class="cline-any cline-yes">1x</span>
|
|
308
|
+
<span class="cline-any cline-yes">1x</span>
|
|
309
|
+
<span class="cline-any cline-yes">1x</span>
|
|
310
|
+
<span class="cline-any cline-yes">1x</span>
|
|
311
|
+
<span class="cline-any cline-yes">1x</span>
|
|
312
|
+
<span class="cline-any cline-yes">1x</span>
|
|
313
|
+
<span class="cline-any cline-yes">1x</span>
|
|
314
|
+
<span class="cline-any cline-yes">1x</span>
|
|
315
|
+
<span class="cline-any cline-yes">1x</span>
|
|
316
|
+
<span class="cline-any cline-yes">1x</span>
|
|
317
|
+
<span class="cline-any cline-yes">1x</span>
|
|
318
|
+
<span class="cline-any cline-yes">22x</span>
|
|
319
|
+
<span class="cline-any cline-yes">22x</span>
|
|
320
|
+
<span class="cline-any cline-yes">22x</span>
|
|
321
|
+
<span class="cline-any cline-yes">22x</span>
|
|
322
|
+
<span class="cline-any cline-yes">22x</span>
|
|
323
|
+
<span class="cline-any cline-yes">22x</span>
|
|
324
|
+
<span class="cline-any cline-yes">22x</span>
|
|
325
|
+
<span class="cline-any cline-yes">22x</span>
|
|
326
|
+
<span class="cline-any cline-yes">22x</span>
|
|
327
|
+
<span class="cline-any cline-yes">22x</span>
|
|
328
|
+
<span class="cline-any cline-yes">22x</span>
|
|
329
|
+
<span class="cline-any cline-yes">22x</span>
|
|
330
|
+
<span class="cline-any cline-yes">22x</span>
|
|
331
|
+
<span class="cline-any cline-yes">22x</span>
|
|
332
|
+
<span class="cline-any cline-yes">22x</span>
|
|
333
|
+
<span class="cline-any cline-yes">22x</span>
|
|
334
|
+
<span class="cline-any cline-yes">22x</span>
|
|
335
|
+
<span class="cline-any cline-yes">22x</span>
|
|
336
|
+
<span class="cline-any cline-yes">22x</span>
|
|
337
|
+
<span class="cline-any cline-yes">22x</span>
|
|
338
|
+
<span class="cline-any cline-yes">22x</span>
|
|
339
|
+
<span class="cline-any cline-yes">22x</span>
|
|
340
|
+
<span class="cline-any cline-yes">22x</span>
|
|
341
|
+
<span class="cline-any cline-yes">22x</span>
|
|
342
|
+
<span class="cline-any cline-yes">22x</span>
|
|
343
|
+
<span class="cline-any cline-yes">22x</span>
|
|
344
|
+
<span class="cline-any cline-yes">22x</span>
|
|
345
|
+
<span class="cline-any cline-yes">22x</span>
|
|
346
|
+
<span class="cline-any cline-yes">22x</span>
|
|
347
|
+
<span class="cline-any cline-yes">22x</span>
|
|
348
|
+
<span class="cline-any cline-yes">22x</span>
|
|
349
|
+
<span class="cline-any cline-yes">22x</span>
|
|
350
|
+
<span class="cline-any cline-yes">22x</span>
|
|
351
|
+
<span class="cline-any cline-yes">22x</span>
|
|
352
|
+
<span class="cline-any cline-yes">22x</span>
|
|
353
|
+
<span class="cline-any cline-yes">1x</span>
|
|
354
|
+
<span class="cline-any cline-yes">1x</span>
|
|
355
|
+
<span class="cline-any cline-yes">1x</span>
|
|
356
|
+
<span class="cline-any cline-yes">22x</span>
|
|
357
|
+
<span class="cline-any cline-yes">22x</span>
|
|
358
|
+
<span class="cline-any cline-yes">6x</span>
|
|
359
|
+
<span class="cline-any cline-yes">6x</span>
|
|
360
|
+
<span class="cline-any cline-yes">6x</span>
|
|
361
|
+
<span class="cline-any cline-yes">4x</span>
|
|
362
|
+
<span class="cline-any cline-yes">4x</span>
|
|
363
|
+
<span class="cline-any cline-yes">4x</span>
|
|
364
|
+
<span class="cline-any cline-yes">4x</span>
|
|
365
|
+
<span class="cline-any cline-yes">4x</span>
|
|
366
|
+
<span class="cline-any cline-yes">4x</span>
|
|
367
|
+
<span class="cline-any cline-yes">46x</span>
|
|
368
|
+
<span class="cline-any cline-yes">4x</span>
|
|
369
|
+
<span class="cline-any cline-yes">6x</span>
|
|
370
|
+
<span class="cline-any cline-yes">2x</span>
|
|
371
|
+
<span class="cline-any cline-yes">2x</span>
|
|
372
|
+
<span class="cline-any cline-yes">6x</span>
|
|
373
|
+
<span class="cline-any cline-yes">22x</span>
|
|
374
|
+
<span class="cline-any cline-yes">22x</span>
|
|
375
|
+
<span class="cline-any cline-yes">22x</span>
|
|
376
|
+
<span class="cline-any cline-yes">22x</span>
|
|
377
|
+
<span class="cline-any cline-yes">22x</span>
|
|
378
|
+
<span class="cline-any cline-yes">3x</span>
|
|
379
|
+
<span class="cline-any cline-yes">22x</span>
|
|
380
|
+
<span class="cline-any cline-yes">3x</span>
|
|
381
|
+
<span class="cline-any cline-yes">3x</span>
|
|
382
|
+
<span class="cline-any cline-yes">3x</span>
|
|
383
|
+
<span class="cline-any cline-yes">3x</span>
|
|
384
|
+
<span class="cline-any cline-yes">19x</span>
|
|
385
|
+
<span class="cline-any cline-yes">2x</span>
|
|
386
|
+
<span class="cline-any cline-yes">16x</span>
|
|
387
|
+
<span class="cline-any cline-yes">14x</span>
|
|
388
|
+
<span class="cline-any cline-yes">14x</span>
|
|
389
|
+
<span class="cline-any cline-yes">14x</span>
|
|
390
|
+
<span class="cline-any cline-yes">14x</span>
|
|
391
|
+
<span class="cline-any cline-yes">14x</span>
|
|
392
|
+
<span class="cline-any cline-yes">14x</span>
|
|
393
|
+
<span class="cline-any cline-yes">14x</span>
|
|
394
|
+
<span class="cline-any cline-yes">14x</span>
|
|
395
|
+
<span class="cline-any cline-yes">14x</span>
|
|
396
|
+
<span class="cline-any cline-yes">22x</span>
|
|
397
|
+
<span class="cline-any cline-yes">22x</span>
|
|
398
|
+
<span class="cline-any cline-yes">22x</span>
|
|
399
|
+
<span class="cline-any cline-yes">107x</span>
|
|
400
|
+
<span class="cline-any cline-yes">107x</span>
|
|
401
|
+
<span class="cline-any cline-yes">22x</span>
|
|
402
|
+
<span class="cline-any cline-yes">22x</span>
|
|
403
|
+
<span class="cline-any cline-yes">22x</span>
|
|
404
|
+
<span class="cline-any cline-yes">1x</span>
|
|
405
|
+
<span class="cline-any cline-yes">1x</span>
|
|
406
|
+
<span class="cline-any cline-yes">1x</span>
|
|
407
|
+
<span class="cline-any cline-yes">1x</span>
|
|
408
|
+
<span class="cline-any cline-yes">1x</span>
|
|
409
|
+
<span class="cline-any cline-yes">1x</span>
|
|
410
|
+
<span class="cline-any cline-yes">1x</span>
|
|
411
|
+
<span class="cline-any cline-yes">1x</span>
|
|
412
|
+
<span class="cline-any cline-yes">1x</span>
|
|
413
|
+
<span class="cline-any cline-yes">1x</span>
|
|
414
|
+
<span class="cline-any cline-yes">1x</span>
|
|
415
|
+
<span class="cline-any cline-yes">1x</span>
|
|
416
|
+
<span class="cline-any cline-yes">1x</span>
|
|
417
|
+
<span class="cline-any cline-yes">18x</span>
|
|
418
|
+
<span class="cline-any cline-yes">18x</span>
|
|
419
|
+
<span class="cline-any cline-yes">18x</span>
|
|
420
|
+
<span class="cline-any cline-yes">18x</span>
|
|
421
|
+
<span class="cline-any cline-yes">18x</span>
|
|
422
|
+
<span class="cline-any cline-yes">18x</span>
|
|
423
|
+
<span class="cline-any cline-yes">18x</span>
|
|
424
|
+
<span class="cline-any cline-yes">18x</span>
|
|
425
|
+
<span class="cline-any cline-yes">18x</span>
|
|
426
|
+
<span class="cline-any cline-yes">17x</span>
|
|
427
|
+
<span class="cline-any cline-yes">17x</span>
|
|
428
|
+
<span class="cline-any cline-yes">18x</span>
|
|
429
|
+
<span class="cline-any cline-yes">18x</span>
|
|
430
|
+
<span class="cline-any cline-yes">18x</span>
|
|
431
|
+
<span class="cline-any cline-yes">18x</span>
|
|
432
|
+
<span class="cline-any cline-yes">18x</span>
|
|
433
|
+
<span class="cline-any cline-yes">18x</span>
|
|
434
|
+
<span class="cline-any cline-yes">18x</span>
|
|
435
|
+
<span class="cline-any cline-yes">18x</span>
|
|
436
|
+
<span class="cline-any cline-yes">18x</span>
|
|
437
|
+
<span class="cline-any cline-yes">18x</span>
|
|
438
|
+
<span class="cline-any cline-yes">18x</span>
|
|
439
|
+
<span class="cline-any cline-yes">3x</span>
|
|
440
|
+
<span class="cline-any cline-yes">3x</span>
|
|
441
|
+
<span class="cline-any cline-yes">18x</span>
|
|
442
|
+
<span class="cline-any cline-yes">18x</span>
|
|
443
|
+
<span class="cline-any cline-yes">18x</span>
|
|
444
|
+
<span class="cline-any cline-yes">18x</span>
|
|
445
|
+
<span class="cline-any cline-yes">18x</span>
|
|
446
|
+
<span class="cline-any cline-yes">18x</span>
|
|
447
|
+
<span class="cline-any cline-yes">18x</span>
|
|
448
|
+
<span class="cline-any cline-yes">18x</span>
|
|
449
|
+
<span class="cline-any cline-yes">18x</span>
|
|
450
|
+
<span class="cline-any cline-yes">18x</span>
|
|
451
|
+
<span class="cline-any cline-yes">18x</span>
|
|
452
|
+
<span class="cline-any cline-yes">18x</span>
|
|
453
|
+
<span class="cline-any cline-yes">3x</span>
|
|
454
|
+
<span class="cline-any cline-yes">3x</span>
|
|
455
|
+
<span class="cline-any cline-yes">3x</span>
|
|
456
|
+
<span class="cline-any cline-yes">3x</span>
|
|
457
|
+
<span class="cline-any cline-yes">3x</span>
|
|
458
|
+
<span class="cline-any cline-yes">3x</span>
|
|
459
|
+
<span class="cline-any cline-yes">3x</span>
|
|
460
|
+
<span class="cline-any cline-yes">3x</span>
|
|
461
|
+
<span class="cline-any cline-yes">3x</span>
|
|
462
|
+
<span class="cline-any cline-yes">3x</span>
|
|
463
|
+
<span class="cline-any cline-yes">3x</span>
|
|
464
|
+
<span class="cline-any cline-yes">18x</span>
|
|
465
|
+
<span class="cline-any cline-yes">14x</span>
|
|
466
|
+
<span class="cline-any cline-yes">14x</span>
|
|
467
|
+
<span class="cline-any cline-yes">14x</span>
|
|
468
|
+
<span class="cline-any cline-yes">14x</span>
|
|
469
|
+
<span class="cline-any cline-yes">14x</span>
|
|
470
|
+
<span class="cline-any cline-yes">14x</span>
|
|
471
|
+
<span class="cline-any cline-yes">18x</span>
|
|
472
|
+
<span class="cline-any cline-yes">18x</span>
|
|
473
|
+
<span class="cline-any cline-yes">18x</span>
|
|
474
|
+
<span class="cline-any cline-yes">18x</span>
|
|
475
|
+
<span class="cline-any cline-yes">18x</span>
|
|
476
|
+
<span class="cline-any cline-yes">18x</span>
|
|
477
|
+
<span class="cline-any cline-yes">18x</span>
|
|
478
|
+
<span class="cline-any cline-yes">18x</span>
|
|
479
|
+
<span class="cline-any cline-yes">18x</span>
|
|
480
|
+
<span class="cline-any cline-yes">18x</span>
|
|
481
|
+
<span class="cline-any cline-yes">18x</span>
|
|
482
|
+
<span class="cline-any cline-yes">18x</span>
|
|
483
|
+
<span class="cline-any cline-yes">18x</span>
|
|
484
|
+
<span class="cline-any cline-yes">18x</span>
|
|
485
|
+
<span class="cline-any cline-yes">18x</span>
|
|
486
|
+
<span class="cline-any cline-yes">1x</span>
|
|
487
|
+
<span class="cline-any cline-yes">1x</span>
|
|
488
|
+
<span class="cline-any cline-yes">1x</span>
|
|
489
|
+
<span class="cline-any cline-yes">1x</span>
|
|
490
|
+
<span class="cline-any cline-yes">1x</span>
|
|
491
|
+
<span class="cline-any cline-yes">1x</span>
|
|
492
|
+
<span class="cline-any cline-yes">18x</span>
|
|
493
|
+
<span class="cline-any cline-yes">18x</span>
|
|
494
|
+
<span class="cline-any cline-yes">18x</span>
|
|
495
|
+
<span class="cline-any cline-yes">18x</span>
|
|
496
|
+
<span class="cline-any cline-yes">1x</span>
|
|
497
|
+
<span class="cline-any cline-yes">1x</span>
|
|
498
|
+
<span class="cline-any cline-yes">1x</span>
|
|
499
|
+
<span class="cline-any cline-yes">1x</span>
|
|
500
|
+
<span class="cline-any cline-yes">1x</span>
|
|
501
|
+
<span class="cline-any cline-yes">1x</span>
|
|
502
|
+
<span class="cline-any cline-yes">4x</span>
|
|
503
|
+
<span class="cline-any cline-yes">4x</span>
|
|
504
|
+
<span class="cline-any cline-yes">4x</span>
|
|
505
|
+
<span class="cline-any cline-yes">1x</span>
|
|
506
|
+
<span class="cline-any cline-yes">1x</span>
|
|
507
|
+
<span class="cline-any cline-yes">1x</span>
|
|
508
|
+
<span class="cline-any cline-yes">1x</span></td><td class="text"><pre class="prettyprint lang-js">import { defaultApplyCasing,
|
|
509
|
+
defaultCasedSearchTermToKey,
|
|
510
|
+
defaultSearchTermToKey
|
|
511
|
+
} from "./model-defaults.js";
|
|
512
|
+
|
|
513
|
+
import KEYMAN_VERSION from "@keymanapp/keyman-version";
|
|
514
|
+
import { LexicalModelSource, WordformToKeySpec } from "./lexical-model.js";
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Processes certain defined model behaviors in such a way that the needed closures
|
|
518
|
+
* may be safely compiled to a JS file and loaded within the LMLayer.
|
|
519
|
+
*
|
|
520
|
+
* This is accomplished by writing out a 'pseudoclosure' within the model's IIFE,
|
|
521
|
+
* then used to build _actual_ closures at LMLayer load time. This 'pseudoclosure'
|
|
522
|
+
* will very closely match the organizational patterns of this class in order to
|
|
523
|
+
* facilitate the maintenance of this approach.
|
|
524
|
+
*/
|
|
525
|
+
export class ModelDefinitions {
|
|
526
|
+
static readonly COMPILED_NAME = 'definitions';
|
|
527
|
+
/**
|
|
528
|
+
* A closure fully implementing the model's defined `applyCasing` behavior with
|
|
529
|
+
* the function parameter preset to the version-appropriate default.
|
|
530
|
+
* `defaults.applyCasing` is captured as part of the closure.
|
|
531
|
+
*
|
|
532
|
+
* During compilation of some models (such as Trie-based wordlist templated models),
|
|
533
|
+
* this closure will be directly used as part of searchTermToKey.
|
|
534
|
+
*
|
|
535
|
+
* In compiled code, this will instead be defined in-line as an autogenerated closure
|
|
536
|
+
* using the other properties of the pseudoclosure.
|
|
537
|
+
*/
|
|
538
|
+
applyCasing?: CasingFunction;
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* A closure fully implementing the model's defined `searchTermToKey` behavior
|
|
542
|
+
* based upon the model's specified casing rules. The `applyCasing` closure is
|
|
543
|
+
* itself captured within this closure.
|
|
544
|
+
*
|
|
545
|
+
* During compilation of some models (such as Trie-based wordlist templated models),
|
|
546
|
+
* this closure will be directly utilized when compiling the lexicon.
|
|
547
|
+
*
|
|
548
|
+
* In compiled code, this will instead be defined in-line as an autogenerated closure
|
|
549
|
+
* using the other properties of the pseudoclosure.
|
|
550
|
+
*/
|
|
551
|
+
searchTermToKey?: WordformToKeySpec;
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* Contains embedded 'default' implementations that may be needed for
|
|
555
|
+
* closures in the compiled version, annotated with the current version
|
|
556
|
+
* of Developer.
|
|
557
|
+
*/
|
|
558
|
+
private defaults: {
|
|
559
|
+
version: string;
|
|
560
|
+
applyCasing?: CasingFunction;
|
|
561
|
+
} = {
|
|
562
|
+
version: KEYMAN_VERSION.VERSION_WITH_TAG
|
|
563
|
+
};
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* Contains the model-specific definitions specified in the model's source.
|
|
567
|
+
*
|
|
568
|
+
* These definitions may expect `defaults.applyCasing` as a parameter in
|
|
569
|
+
* their final closures.
|
|
570
|
+
*/
|
|
571
|
+
private model: {
|
|
572
|
+
applyCasing?: CasingFunction;
|
|
573
|
+
searchTermToKey?: WordformToKeySpec;
|
|
574
|
+
} = {};
|
|
575
|
+
|
|
576
|
+
constructor(modelSource: LexicalModelSource) {
|
|
577
|
+
// Determine the model's `applyCasing` function / implementation.
|
|
578
|
+
if(modelSource.languageUsesCasing) {
|
|
579
|
+
this.defaults.applyCasing = defaultApplyCasing;
|
|
580
|
+
|
|
581
|
+
if(modelSource.applyCasing) {
|
|
582
|
+
this.model.applyCasing = modelSource.applyCasing;
|
|
583
|
+
let _this = this;
|
|
584
|
+
|
|
585
|
+
// Since the defined casing function may expect to take our default implementation
|
|
586
|
+
// as a parameter, we can define the full implementation via closure capture.
|
|
587
|
+
this.applyCasing = function(casing: CasingForm, text: string) {
|
|
588
|
+
return _this.model.applyCasing(casing, text, _this.defaults.applyCasing);
|
|
589
|
+
};
|
|
590
|
+
} else {
|
|
591
|
+
this.applyCasing = this.defaults.applyCasing;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
// START: if(model type uses keying)...
|
|
596
|
+
|
|
597
|
+
// Use the default search term to key function, if left unspecified.
|
|
598
|
+
if(modelSource.searchTermToKey) {
|
|
599
|
+
this.model.searchTermToKey = modelSource.searchTermToKey;
|
|
600
|
+
} else if(modelSource.languageUsesCasing) {
|
|
601
|
+
// applyCasing is defined here.
|
|
602
|
+
// Unfortunately, this only works conceptually. .toString on a closure
|
|
603
|
+
// does not result in proper compilation.
|
|
604
|
+
this.model.searchTermToKey = defaultCasedSearchTermToKey;
|
|
605
|
+
} else if(modelSource.languageUsesCasing == false) {
|
|
606
|
+
this.model.searchTermToKey = defaultSearchTermToKey;
|
|
607
|
+
} else {
|
|
608
|
+
// If languageUsesCasing is not defined, then we use pre-14.0 behavior,
|
|
609
|
+
// which expects a lowercased default.
|
|
610
|
+
this.model.searchTermToKey = defaultCasedSearchTermToKey;
|
|
611
|
+
// Needed to provide pre-14.0 default lowercasing as part of the
|
|
612
|
+
// search-term keying operation.
|
|
613
|
+
this.defaults.applyCasing = defaultApplyCasing;
|
|
614
|
+
// For compile-time use.
|
|
615
|
+
this.applyCasing = this.defaults.applyCasing;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
let _this = this;
|
|
619
|
+
this.searchTermToKey = function(text: string) {
|
|
620
|
+
return _this.model.searchTermToKey(text, _this.applyCasing);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
// END: if(model type uses keying)...
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
// ------------ end: common compile-time / run-time code ---------------
|
|
627
|
+
|
|
628
|
+
// START: handwritten compilation code (to accomplish the 'common' pattern defined above)
|
|
629
|
+
|
|
630
|
+
/**
|
|
631
|
+
* Writes out a compiled JS version of the pseudoclosure, preserving all function
|
|
632
|
+
* implementations.
|
|
633
|
+
*
|
|
634
|
+
* This should be written to the file within the same IIFE as the model but BEFORE
|
|
635
|
+
* the model itself, as the model will need to refer to the definitions herein.
|
|
636
|
+
*/
|
|
637
|
+
compileDefinitions(): string {
|
|
638
|
+
let defn: string = '';
|
|
639
|
+
defn += `var ${PSEUDOCLOSURE} = {\n`
|
|
640
|
+
|
|
641
|
+
// ----------------------
|
|
642
|
+
// START - the 'defaults', which are common within the same Developer version.
|
|
643
|
+
defn += ` defaults: {\n version: "${this.defaults.version}"`;
|
|
644
|
+
|
|
645
|
+
// Only write out `applyCasing` if and when it is needed.
|
|
646
|
+
if(this.defaults.applyCasing) {
|
|
647
|
+
defn += `,\n applyCasing: ${this.defaults.applyCasing.toString()}`;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
// Finalizes `defaults`
|
|
651
|
+
defn += `\n },`;
|
|
652
|
+
// END - the 'defaults'
|
|
653
|
+
|
|
654
|
+
// ----------------------
|
|
655
|
+
// START - model-specific definitions (when defined)
|
|
656
|
+
defn += ` model: {\n`;
|
|
657
|
+
defn += ` searchTermToKey: ${this.model.searchTermToKey.toString()}`;
|
|
658
|
+
|
|
659
|
+
if(this.model.applyCasing) {
|
|
660
|
+
defn += `,\n applyCasing: ${this.model.applyCasing.toString()}`;
|
|
661
|
+
}
|
|
662
|
+
defn += `\n }`
|
|
663
|
+
// END - model-specific definitions
|
|
664
|
+
|
|
665
|
+
// ----------------------
|
|
666
|
+
// START - compiled closures. Given those definitions, write out the
|
|
667
|
+
// pseudoclosure-referencing closures for the needed methods.
|
|
668
|
+
|
|
669
|
+
// We should be able to define these closures in-line with the object's
|
|
670
|
+
// initialization. Worst-case, we simply move the definitions outside
|
|
671
|
+
// of the pseudoclosure's init and THEN define/assign these closures to
|
|
672
|
+
// the object, as references will be available then for sure.
|
|
673
|
+
if(this.model.applyCasing) {
|
|
674
|
+
// A major potential issue: if the user wants to call extra custom functions that they've written.
|
|
675
|
+
//
|
|
676
|
+
// `applyCasing` recursion SHOULD be fine if they write `this.applyCasing() and forward all arguments
|
|
677
|
+
// appropriately, as it will be known as `applyCasing` on the runtime `this` (`model`) object.
|
|
678
|
+
//
|
|
679
|
+
// Similarly, as long as any helper functions are similarly compiled and stored as part of `model`,
|
|
680
|
+
// they should be accessible too. The issue would be to actually allow use of extra custom funcs
|
|
681
|
+
// and include them as part of this object as part of compilation.
|
|
682
|
+
defn += `,\n applyCasing: function(caseToApply, text) {
|
|
683
|
+
return ${PSEUDOCLOSURE}.model.applyCasing(caseToApply, text, ${PSEUDOCLOSURE}.defaults.applyCasing);
|
|
684
|
+
}`;
|
|
685
|
+
} else if(this.defaults.applyCasing) {
|
|
686
|
+
// We can't directly assign from `.defaults`, as initialization-time field reads
|
|
687
|
+
// are not permitted within JS. Function references, however, are valid.
|
|
688
|
+
defn += `,\n applyCasing: function(caseToApply, text) {
|
|
689
|
+
return ${PSEUDOCLOSURE}.defaults.applyCasing(caseToApply, text);
|
|
690
|
+
}`;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
// if(this.searchTermToKey) {
|
|
694
|
+
defn += `,\n searchTermToKey: function(text) {
|
|
695
|
+
return ${PSEUDOCLOSURE}.model.searchTermToKey(text, ${PSEUDOCLOSURE}.applyCasing);
|
|
696
|
+
}`;
|
|
697
|
+
// }
|
|
698
|
+
|
|
699
|
+
// END - compiled closures.
|
|
700
|
+
|
|
701
|
+
// ----------------------
|
|
702
|
+
// Finalize the definition of... `definitions`.
|
|
703
|
+
defn += `\n};\n`;
|
|
704
|
+
|
|
705
|
+
return defn;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
/**
|
|
709
|
+
* Compiles the model-options entry for `searchTermToKey` in reference to the
|
|
710
|
+
* compiled pseudoclosure.
|
|
711
|
+
*/
|
|
712
|
+
compileSearchTermToKey(): string {
|
|
713
|
+
// Simply point the model to the constructed closure defined by `compilePseudoclosure`.
|
|
714
|
+
// See "START - compiled closures" section.
|
|
715
|
+
return `${PSEUDOCLOSURE}.searchTermToKey`;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
/**
|
|
719
|
+
* Compiles the model-options entry for `applyCasing` in reference to the
|
|
720
|
+
* compiled pseudoclosure.
|
|
721
|
+
*/
|
|
722
|
+
compileApplyCasing(): string {// Simply point the model to the constructed closure defined by `compilePseudoclosure`.
|
|
723
|
+
// See "START - compiled closures" section.
|
|
724
|
+
return `${PSEUDOCLOSURE}.applyCasing`;
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
// Because it references the class field, this line must come afterward.
|
|
729
|
+
const PSEUDOCLOSURE = ModelDefinitions.COMPILED_NAME;</pre></td></tr></table></pre>
|
|
730
|
+
|
|
731
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
732
|
+
</div><!-- /wrapper -->
|
|
733
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
734
|
+
Code coverage generated by
|
|
735
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
736
|
+
at 2023-04-11T18:53:57.094Z
|
|
737
|
+
</div>
|
|
738
|
+
<script src="../prettify.js"></script>
|
|
739
|
+
<script>
|
|
740
|
+
window.onload = function () {
|
|
741
|
+
prettyPrint();
|
|
742
|
+
};
|
|
743
|
+
</script>
|
|
744
|
+
<script src="../sorter.js"></script>
|
|
745
|
+
<script src="../block-navigation.js"></script>
|
|
746
|
+
</body>
|
|
747
|
+
</html>
|
|
748
|
+
|