@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,1234 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for test/wordbreakers/default-wordbreaker-esm.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">test/wordbreakers</a> default-wordbreaker-esm.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">90.33% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>346/383</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">69.16% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>83/120</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'>14/14</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">90.33% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>346/383</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>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
+
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
+
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
+
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
+
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
+
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
+
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
+
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
+
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
+
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
+
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
+
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
+
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
+
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
+
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
+
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
+
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
+
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
+
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
+
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
+
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
+
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
+
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
+
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
+
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
+
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
+
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
+
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
+
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
+
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
+
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
+
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
+
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
+
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
+
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
+
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
+
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
+
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
+
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
+
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
+
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
+
<a name='L384'></a><a href='#L384'>384</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
450
|
+
<span class="cline-any cline-yes">1x</span>
|
|
451
|
+
<span class="cline-any cline-yes">1x</span>
|
|
452
|
+
<span class="cline-any cline-yes">1x</span>
|
|
453
|
+
<span class="cline-any cline-yes">1x</span>
|
|
454
|
+
<span class="cline-any cline-yes">1x</span>
|
|
455
|
+
<span class="cline-any cline-yes">1x</span>
|
|
456
|
+
<span class="cline-any cline-yes">1x</span>
|
|
457
|
+
<span class="cline-any cline-yes">1x</span>
|
|
458
|
+
<span class="cline-any cline-yes">1x</span>
|
|
459
|
+
<span class="cline-any cline-yes">1x</span>
|
|
460
|
+
<span class="cline-any cline-yes">1x</span>
|
|
461
|
+
<span class="cline-any cline-yes">1x</span>
|
|
462
|
+
<span class="cline-any cline-yes">26x</span>
|
|
463
|
+
<span class="cline-any cline-yes">26x</span>
|
|
464
|
+
<span class="cline-any cline-no"> </span>
|
|
465
|
+
<span class="cline-any cline-no"> </span>
|
|
466
|
+
<span class="cline-any cline-yes">26x</span>
|
|
467
|
+
<span class="cline-any cline-yes">26x</span>
|
|
468
|
+
<span class="cline-any cline-yes">26x</span>
|
|
469
|
+
<span class="cline-any cline-yes">26x</span>
|
|
470
|
+
<span class="cline-any cline-yes">26x</span>
|
|
471
|
+
<span class="cline-any cline-yes">204x</span>
|
|
472
|
+
<span class="cline-any cline-yes">204x</span>
|
|
473
|
+
<span class="cline-any cline-yes">204x</span>
|
|
474
|
+
<span class="cline-any cline-yes">204x</span>
|
|
475
|
+
<span class="cline-any cline-yes">204x</span>
|
|
476
|
+
<span class="cline-any cline-yes">166x</span>
|
|
477
|
+
<span class="cline-any cline-yes">166x</span>
|
|
478
|
+
<span class="cline-any cline-yes">204x</span>
|
|
479
|
+
<span class="cline-any cline-no"> </span>
|
|
480
|
+
<span class="cline-any cline-no"> </span>
|
|
481
|
+
<span class="cline-any cline-no"> </span>
|
|
482
|
+
<span class="cline-any cline-no"> </span>
|
|
483
|
+
<span class="cline-any cline-yes">204x</span>
|
|
484
|
+
<span class="cline-any cline-yes">26x</span>
|
|
485
|
+
<span class="cline-any cline-yes">26x</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">1x</span>
|
|
493
|
+
<span class="cline-any cline-yes">1x</span>
|
|
494
|
+
<span class="cline-any cline-yes">1x</span>
|
|
495
|
+
<span class="cline-any cline-yes">1x</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">204x</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">204x</span>
|
|
503
|
+
<span class="cline-any cline-yes">204x</span>
|
|
504
|
+
<span class="cline-any cline-yes">204x</span>
|
|
505
|
+
<span class="cline-any cline-yes">204x</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">426x</span>
|
|
509
|
+
<span class="cline-any cline-yes">426x</span>
|
|
510
|
+
<span class="cline-any cline-yes">1x</span>
|
|
511
|
+
<span class="cline-any cline-yes">1x</span>
|
|
512
|
+
<span class="cline-any cline-yes">68x</span>
|
|
513
|
+
<span class="cline-any cline-yes">68x</span>
|
|
514
|
+
<span class="cline-any cline-yes">1x</span>
|
|
515
|
+
<span class="cline-any cline-yes">1x</span>
|
|
516
|
+
<span class="cline-any cline-yes">1x</span>
|
|
517
|
+
<span class="cline-any cline-yes">1x</span>
|
|
518
|
+
<span class="cline-any cline-yes">1x</span>
|
|
519
|
+
<span class="cline-any cline-yes">1x</span>
|
|
520
|
+
<span class="cline-any cline-yes">1x</span>
|
|
521
|
+
<span class="cline-any cline-yes">1x</span>
|
|
522
|
+
<span class="cline-any cline-yes">204x</span>
|
|
523
|
+
<span class="cline-any cline-yes">204x</span>
|
|
524
|
+
<span class="cline-any cline-yes">204x</span>
|
|
525
|
+
<span class="cline-any cline-yes">204x</span>
|
|
526
|
+
<span class="cline-any cline-yes">204x</span>
|
|
527
|
+
<span class="cline-any cline-yes">204x</span>
|
|
528
|
+
<span class="cline-any cline-yes">204x</span>
|
|
529
|
+
<span class="cline-any cline-yes">1x</span>
|
|
530
|
+
<span class="cline-any cline-yes">1x</span>
|
|
531
|
+
<span class="cline-any cline-yes">1x</span>
|
|
532
|
+
<span class="cline-any cline-yes">1x</span>
|
|
533
|
+
<span class="cline-any cline-yes">1x</span>
|
|
534
|
+
<span class="cline-any cline-yes">1x</span>
|
|
535
|
+
<span class="cline-any cline-yes">1x</span>
|
|
536
|
+
<span class="cline-any cline-yes">1x</span>
|
|
537
|
+
<span class="cline-any cline-yes">1x</span>
|
|
538
|
+
<span class="cline-any cline-yes">26x</span>
|
|
539
|
+
<span class="cline-any cline-yes">26x</span>
|
|
540
|
+
<span class="cline-any cline-no"> </span>
|
|
541
|
+
<span class="cline-any cline-no"> </span>
|
|
542
|
+
<span class="cline-any cline-no"> </span>
|
|
543
|
+
<span class="cline-any cline-yes">26x</span>
|
|
544
|
+
<span class="cline-any cline-yes">26x</span>
|
|
545
|
+
<span class="cline-any cline-yes">26x</span>
|
|
546
|
+
<span class="cline-any cline-yes">26x</span>
|
|
547
|
+
<span class="cline-any cline-yes">26x</span>
|
|
548
|
+
<span class="cline-any cline-yes">26x</span>
|
|
549
|
+
<span class="cline-any cline-yes">26x</span>
|
|
550
|
+
<span class="cline-any cline-yes">26x</span>
|
|
551
|
+
<span class="cline-any cline-yes">26x</span>
|
|
552
|
+
<span class="cline-any cline-yes">26x</span>
|
|
553
|
+
<span class="cline-any cline-yes">26x</span>
|
|
554
|
+
<span class="cline-any cline-yes">26x</span>
|
|
555
|
+
<span class="cline-any cline-yes">26x</span>
|
|
556
|
+
<span class="cline-any cline-yes">26x</span>
|
|
557
|
+
<span class="cline-any cline-yes">26x</span>
|
|
558
|
+
<span class="cline-any cline-yes">26x</span>
|
|
559
|
+
<span class="cline-any cline-yes">26x</span>
|
|
560
|
+
<span class="cline-any cline-yes">26x</span>
|
|
561
|
+
<span class="cline-any cline-yes">26x</span>
|
|
562
|
+
<span class="cline-any cline-yes">26x</span>
|
|
563
|
+
<span class="cline-any cline-yes">26x</span>
|
|
564
|
+
<span class="cline-any cline-yes">26x</span>
|
|
565
|
+
<span class="cline-any cline-yes">26x</span>
|
|
566
|
+
<span class="cline-any cline-yes">26x</span>
|
|
567
|
+
<span class="cline-any cline-yes">26x</span>
|
|
568
|
+
<span class="cline-any cline-yes">26x</span>
|
|
569
|
+
<span class="cline-any cline-yes">26x</span>
|
|
570
|
+
<span class="cline-any cline-yes">26x</span>
|
|
571
|
+
<span class="cline-any cline-yes">26x</span>
|
|
572
|
+
<span class="cline-any cline-yes">26x</span>
|
|
573
|
+
<span class="cline-any cline-yes">26x</span>
|
|
574
|
+
<span class="cline-any cline-yes">26x</span>
|
|
575
|
+
<span class="cline-any cline-yes">470x</span>
|
|
576
|
+
<span class="cline-any cline-yes">470x</span>
|
|
577
|
+
<span class="cline-any cline-yes">470x</span>
|
|
578
|
+
<span class="cline-any cline-yes">470x</span>
|
|
579
|
+
<span class="cline-any cline-yes">470x</span>
|
|
580
|
+
<span class="cline-any cline-yes">470x</span>
|
|
581
|
+
<span class="cline-any cline-yes">470x</span>
|
|
582
|
+
<span class="cline-any cline-yes">470x</span>
|
|
583
|
+
<span class="cline-any cline-yes">470x</span>
|
|
584
|
+
<span class="cline-any cline-yes">470x</span>
|
|
585
|
+
<span class="cline-any cline-yes">26x</span>
|
|
586
|
+
<span class="cline-any cline-yes">26x</span>
|
|
587
|
+
<span class="cline-any cline-yes">26x</span>
|
|
588
|
+
<span class="cline-any cline-yes">444x</span>
|
|
589
|
+
<span class="cline-any cline-yes">470x</span>
|
|
590
|
+
<span class="cline-any cline-yes">26x</span>
|
|
591
|
+
<span class="cline-any cline-yes">26x</span>
|
|
592
|
+
<span class="cline-any cline-yes">26x</span>
|
|
593
|
+
<span class="cline-any cline-yes">418x</span>
|
|
594
|
+
<span class="cline-any cline-yes">470x</span>
|
|
595
|
+
<span class="cline-any cline-yes">470x</span>
|
|
596
|
+
<span class="cline-any cline-yes">418x</span>
|
|
597
|
+
<span class="cline-any cline-yes">418x</span>
|
|
598
|
+
<span class="cline-any cline-yes">470x</span>
|
|
599
|
+
<span class="cline-any cline-yes">470x</span>
|
|
600
|
+
<span class="cline-any cline-no"> </span>
|
|
601
|
+
<span class="cline-any cline-no"> </span>
|
|
602
|
+
<span class="cline-any cline-no"> </span>
|
|
603
|
+
<span class="cline-any cline-yes">418x</span>
|
|
604
|
+
<span class="cline-any cline-yes">418x</span>
|
|
605
|
+
<span class="cline-any cline-yes">470x</span>
|
|
606
|
+
<span class="cline-any cline-yes">470x</span>
|
|
607
|
+
<span class="cline-any cline-no"> </span>
|
|
608
|
+
<span class="cline-any cline-no"> </span>
|
|
609
|
+
<span class="cline-any cline-no"> </span>
|
|
610
|
+
<span class="cline-any cline-yes">418x</span>
|
|
611
|
+
<span class="cline-any cline-yes">418x</span>
|
|
612
|
+
<span class="cline-any cline-yes">418x</span>
|
|
613
|
+
<span class="cline-any cline-yes">418x</span>
|
|
614
|
+
<span class="cline-any cline-yes">418x</span>
|
|
615
|
+
<span class="cline-any cline-yes">418x</span>
|
|
616
|
+
<span class="cline-any cline-yes">418x</span>
|
|
617
|
+
<span class="cline-any cline-yes">418x</span>
|
|
618
|
+
<span class="cline-any cline-yes">470x</span>
|
|
619
|
+
<span class="cline-any cline-yes">470x</span>
|
|
620
|
+
<span class="cline-any cline-yes">418x</span>
|
|
621
|
+
<span class="cline-any cline-yes">418x</span>
|
|
622
|
+
<span class="cline-any cline-yes">418x</span>
|
|
623
|
+
<span class="cline-any cline-yes">418x</span>
|
|
624
|
+
<span class="cline-any cline-yes">418x</span>
|
|
625
|
+
<span class="cline-any cline-yes">418x</span>
|
|
626
|
+
<span class="cline-any cline-yes">418x</span>
|
|
627
|
+
<span class="cline-any cline-yes">470x</span>
|
|
628
|
+
<span class="cline-any cline-yes">470x</span>
|
|
629
|
+
<span class="cline-any cline-no"> </span>
|
|
630
|
+
<span class="cline-any cline-no"> </span>
|
|
631
|
+
<span class="cline-any cline-no"> </span>
|
|
632
|
+
<span class="cline-any cline-no"> </span>
|
|
633
|
+
<span class="cline-any cline-no"> </span>
|
|
634
|
+
<span class="cline-any cline-no"> </span>
|
|
635
|
+
<span class="cline-any cline-yes">418x</span>
|
|
636
|
+
<span class="cline-any cline-yes">418x</span>
|
|
637
|
+
<span class="cline-any cline-yes">418x</span>
|
|
638
|
+
<span class="cline-any cline-yes">470x</span>
|
|
639
|
+
<span class="cline-any cline-no"> </span>
|
|
640
|
+
<span class="cline-any cline-no"> </span>
|
|
641
|
+
<span class="cline-any cline-no"> </span>
|
|
642
|
+
<span class="cline-any cline-yes">418x</span>
|
|
643
|
+
<span class="cline-any cline-yes">418x</span>
|
|
644
|
+
<span class="cline-any cline-yes">418x</span>
|
|
645
|
+
<span class="cline-any cline-yes">470x</span>
|
|
646
|
+
<span class="cline-any cline-yes">470x</span>
|
|
647
|
+
<span class="cline-any cline-yes">8x</span>
|
|
648
|
+
<span class="cline-any cline-yes">8x</span>
|
|
649
|
+
<span class="cline-any cline-yes">8x</span>
|
|
650
|
+
<span class="cline-any cline-yes">8x</span>
|
|
651
|
+
<span class="cline-any cline-yes">8x</span>
|
|
652
|
+
<span class="cline-any cline-yes">8x</span>
|
|
653
|
+
<span class="cline-any cline-yes">418x</span>
|
|
654
|
+
<span class="cline-any cline-yes">418x</span>
|
|
655
|
+
<span class="cline-any cline-yes">470x</span>
|
|
656
|
+
<span class="cline-any cline-yes">470x</span>
|
|
657
|
+
<span class="cline-any cline-yes">186x</span>
|
|
658
|
+
<span class="cline-any cline-yes">186x</span>
|
|
659
|
+
<span class="cline-any cline-yes">470x</span>
|
|
660
|
+
<span class="cline-any cline-yes">470x</span>
|
|
661
|
+
<span class="cline-any cline-yes">470x</span>
|
|
662
|
+
<span class="cline-any cline-yes">182x</span>
|
|
663
|
+
<span class="cline-any cline-yes">470x</span>
|
|
664
|
+
<span class="cline-any cline-yes">470x</span>
|
|
665
|
+
<span class="cline-any cline-yes">470x</span>
|
|
666
|
+
<span class="cline-any cline-yes">178x</span>
|
|
667
|
+
<span class="cline-any cline-yes">470x</span>
|
|
668
|
+
<span class="cline-any cline-yes">470x</span>
|
|
669
|
+
<span class="cline-any cline-yes">178x</span>
|
|
670
|
+
<span class="cline-any cline-yes">470x</span>
|
|
671
|
+
<span class="cline-any cline-yes">470x</span>
|
|
672
|
+
<span class="cline-any cline-yes">470x</span>
|
|
673
|
+
<span class="cline-any cline-yes">178x</span>
|
|
674
|
+
<span class="cline-any cline-yes">470x</span>
|
|
675
|
+
<span class="cline-any cline-yes">470x</span>
|
|
676
|
+
<span class="cline-any cline-yes">470x</span>
|
|
677
|
+
<span class="cline-any cline-yes">178x</span>
|
|
678
|
+
<span class="cline-any cline-yes">178x</span>
|
|
679
|
+
<span class="cline-any cline-yes">178x</span>
|
|
680
|
+
<span class="cline-any cline-yes">470x</span>
|
|
681
|
+
<span class="cline-any cline-yes">470x</span>
|
|
682
|
+
<span class="cline-any cline-yes">178x</span>
|
|
683
|
+
<span class="cline-any cline-yes">470x</span>
|
|
684
|
+
<span class="cline-any cline-yes">470x</span>
|
|
685
|
+
<span class="cline-any cline-yes">178x</span>
|
|
686
|
+
<span class="cline-any cline-yes">470x</span>
|
|
687
|
+
<span class="cline-any cline-yes">470x</span>
|
|
688
|
+
<span class="cline-any cline-yes">178x</span>
|
|
689
|
+
<span class="cline-any cline-yes">178x</span>
|
|
690
|
+
<span class="cline-any cline-yes">470x</span>
|
|
691
|
+
<span class="cline-any cline-yes">470x</span>
|
|
692
|
+
<span class="cline-any cline-yes">470x</span>
|
|
693
|
+
<span class="cline-any cline-yes">178x</span>
|
|
694
|
+
<span class="cline-any cline-yes">470x</span>
|
|
695
|
+
<span class="cline-any cline-yes">470x</span>
|
|
696
|
+
<span class="cline-any cline-yes">470x</span>
|
|
697
|
+
<span class="cline-any cline-yes">178x</span>
|
|
698
|
+
<span class="cline-any cline-yes">470x</span>
|
|
699
|
+
<span class="cline-any cline-yes">470x</span>
|
|
700
|
+
<span class="cline-any cline-yes">178x</span>
|
|
701
|
+
<span class="cline-any cline-yes">178x</span>
|
|
702
|
+
<span class="cline-any cline-yes">178x</span>
|
|
703
|
+
<span class="cline-any cline-yes">470x</span>
|
|
704
|
+
<span class="cline-any cline-yes">470x</span>
|
|
705
|
+
<span class="cline-any cline-yes">470x</span>
|
|
706
|
+
<span class="cline-any cline-yes">470x</span>
|
|
707
|
+
<span class="cline-any cline-yes">470x</span>
|
|
708
|
+
<span class="cline-any cline-yes">178x</span>
|
|
709
|
+
<span class="cline-any cline-yes">178x</span>
|
|
710
|
+
<span class="cline-any cline-yes">470x</span>
|
|
711
|
+
<span class="cline-any cline-yes">470x</span>
|
|
712
|
+
<span class="cline-any cline-yes">470x</span>
|
|
713
|
+
<span class="cline-any cline-yes">178x</span>
|
|
714
|
+
<span class="cline-any cline-yes">178x</span>
|
|
715
|
+
<span class="cline-any cline-yes">178x</span>
|
|
716
|
+
<span class="cline-any cline-yes">178x</span>
|
|
717
|
+
<span class="cline-any cline-yes">178x</span>
|
|
718
|
+
<span class="cline-any cline-yes">470x</span>
|
|
719
|
+
<span class="cline-any cline-no"> </span>
|
|
720
|
+
<span class="cline-any cline-no"> </span>
|
|
721
|
+
<span class="cline-any cline-no"> </span>
|
|
722
|
+
<span class="cline-any cline-no"> </span>
|
|
723
|
+
<span class="cline-any cline-no"> </span>
|
|
724
|
+
<span class="cline-any cline-no"> </span>
|
|
725
|
+
<span class="cline-any cline-no"> </span>
|
|
726
|
+
<span class="cline-any cline-no"> </span>
|
|
727
|
+
<span class="cline-any cline-no"> </span>
|
|
728
|
+
<span class="cline-any cline-no"> </span>
|
|
729
|
+
<span class="cline-any cline-yes">470x</span>
|
|
730
|
+
<span class="cline-any cline-yes">178x</span>
|
|
731
|
+
<span class="cline-any cline-yes">178x</span>
|
|
732
|
+
<span class="cline-any cline-yes">178x</span>
|
|
733
|
+
<span class="cline-any cline-yes">178x</span>
|
|
734
|
+
<span class="cline-any cline-yes">26x</span>
|
|
735
|
+
<span class="cline-any cline-yes">26x</span>
|
|
736
|
+
<span class="cline-any cline-yes">26x</span>
|
|
737
|
+
<span class="cline-any cline-yes">26x</span>
|
|
738
|
+
<span class="cline-any cline-yes">26x</span>
|
|
739
|
+
<span class="cline-any cline-yes">26x</span>
|
|
740
|
+
<span class="cline-any cline-yes">26x</span>
|
|
741
|
+
<span class="cline-any cline-yes">26x</span>
|
|
742
|
+
<span class="cline-any cline-yes">26x</span>
|
|
743
|
+
<span class="cline-any cline-yes">26x</span>
|
|
744
|
+
<span class="cline-any cline-yes">26x</span>
|
|
745
|
+
<span class="cline-any cline-yes">26x</span>
|
|
746
|
+
<span class="cline-any cline-yes">26x</span>
|
|
747
|
+
<span class="cline-any cline-yes">26x</span>
|
|
748
|
+
<span class="cline-any cline-yes">478x</span>
|
|
749
|
+
<span class="cline-any cline-yes">26x</span>
|
|
750
|
+
<span class="cline-any cline-yes">478x</span>
|
|
751
|
+
<span class="cline-any cline-yes">2x</span>
|
|
752
|
+
<span class="cline-any cline-yes">2x</span>
|
|
753
|
+
<span class="cline-any cline-yes">450x</span>
|
|
754
|
+
<span class="cline-any cline-yes">450x</span>
|
|
755
|
+
<span class="cline-any cline-yes">26x</span>
|
|
756
|
+
<span class="cline-any cline-yes">26x</span>
|
|
757
|
+
<span class="cline-any cline-yes">26x</span>
|
|
758
|
+
<span class="cline-any cline-yes">26x</span>
|
|
759
|
+
<span class="cline-any cline-yes">26x</span>
|
|
760
|
+
<span class="cline-any cline-yes">26x</span>
|
|
761
|
+
<span class="cline-any cline-yes">504x</span>
|
|
762
|
+
<span class="cline-any cline-no"> </span>
|
|
763
|
+
<span class="cline-any cline-yes">504x</span>
|
|
764
|
+
<span class="cline-any cline-yes">52x</span>
|
|
765
|
+
<span class="cline-any cline-yes">504x</span>
|
|
766
|
+
<span class="cline-any cline-yes">2x</span>
|
|
767
|
+
<span class="cline-any cline-yes">2x</span>
|
|
768
|
+
<span class="cline-any cline-yes">2x</span>
|
|
769
|
+
<span class="cline-any cline-yes">450x</span>
|
|
770
|
+
<span class="cline-any cline-yes">450x</span>
|
|
771
|
+
<span class="cline-any cline-yes">26x</span>
|
|
772
|
+
<span class="cline-any cline-yes">26x</span>
|
|
773
|
+
<span class="cline-any cline-yes">26x</span>
|
|
774
|
+
<span class="cline-any cline-yes">26x</span>
|
|
775
|
+
<span class="cline-any cline-yes">1750x</span>
|
|
776
|
+
<span class="cline-any cline-yes">1750x</span>
|
|
777
|
+
<span class="cline-any cline-yes">1750x</span>
|
|
778
|
+
<span class="cline-any cline-yes">26x</span>
|
|
779
|
+
<span class="cline-any cline-yes">26x</span>
|
|
780
|
+
<span class="cline-any cline-yes">68x</span>
|
|
781
|
+
<span class="cline-any cline-yes">68x</span>
|
|
782
|
+
<span class="cline-any cline-yes">68x</span>
|
|
783
|
+
<span class="cline-any cline-yes">26x</span>
|
|
784
|
+
<span class="cline-any cline-yes">1x</span>
|
|
785
|
+
<span class="cline-any cline-yes">1x</span>
|
|
786
|
+
<span class="cline-any cline-yes">904x</span>
|
|
787
|
+
<span class="cline-any cline-yes">904x</span>
|
|
788
|
+
<span class="cline-any cline-yes">904x</span>
|
|
789
|
+
<span class="cline-any cline-yes">1x</span>
|
|
790
|
+
<span class="cline-any cline-yes">1x</span>
|
|
791
|
+
<span class="cline-any cline-yes">1x</span>
|
|
792
|
+
<span class="cline-any cline-yes">1x</span>
|
|
793
|
+
<span class="cline-any cline-yes">1x</span>
|
|
794
|
+
<span class="cline-any cline-yes">1x</span>
|
|
795
|
+
<span class="cline-any cline-yes">1x</span>
|
|
796
|
+
<span class="cline-any cline-yes">904x</span>
|
|
797
|
+
<span class="cline-any cline-yes">904x</span>
|
|
798
|
+
<span class="cline-any cline-yes">904x</span>
|
|
799
|
+
<span class="cline-any cline-yes">904x</span>
|
|
800
|
+
<span class="cline-any cline-yes">904x</span>
|
|
801
|
+
<span class="cline-any cline-yes">1x</span>
|
|
802
|
+
<span class="cline-any cline-yes">1x</span>
|
|
803
|
+
<span class="cline-any cline-yes">1x</span>
|
|
804
|
+
<span class="cline-any cline-yes">1x</span>
|
|
805
|
+
<span class="cline-any cline-yes">1x</span>
|
|
806
|
+
<span class="cline-any cline-yes">1x</span>
|
|
807
|
+
<span class="cline-any cline-yes">1x</span>
|
|
808
|
+
<span class="cline-any cline-yes">1x</span>
|
|
809
|
+
<span class="cline-any cline-yes">1x</span>
|
|
810
|
+
<span class="cline-any cline-yes">1x</span>
|
|
811
|
+
<span class="cline-any cline-yes">1x</span>
|
|
812
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
813
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
814
|
+
<span class="cline-any cline-no"> </span>
|
|
815
|
+
<span class="cline-any cline-no"> </span>
|
|
816
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
817
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
818
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
819
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
820
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
821
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
822
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
823
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
824
|
+
<span class="cline-any cline-yes">5944x</span>
|
|
825
|
+
<span class="cline-any cline-yes">9292x</span>
|
|
826
|
+
<span class="cline-any cline-yes">2444x</span>
|
|
827
|
+
<span class="cline-any cline-yes">2444x</span>
|
|
828
|
+
<span class="cline-any cline-yes">904x</span>
|
|
829
|
+
<span class="cline-any cline-yes">904x</span>
|
|
830
|
+
<span class="cline-any cline-yes">904x</span>
|
|
831
|
+
<span class="cline-any cline-yes">904x</span>
|
|
832
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">// TEMP: esm version of /common/models/wordbreakers/default/index.ts
|
|
833
|
+
|
|
834
|
+
import { I, WORD_BREAK_PROPERTY, WordBreakProperty } from './data.js';
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
/**
|
|
838
|
+
* Word breaker based on Unicode Standard Annex #29, Section 4.1:
|
|
839
|
+
* Default Word Boundary Specification.
|
|
840
|
+
*
|
|
841
|
+
* @see http://unicode.org/reports/tr29/#Word_Boundaries
|
|
842
|
+
* @see https://github.com/eddieantonio/unicode-default-word-boundary/tree/v12.0.0
|
|
843
|
+
*/
|
|
844
|
+
export default function default_(text: string): Span[] {
|
|
845
|
+
let boundaries = findBoundaries(text);
|
|
846
|
+
if (boundaries.length == 0) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
847
|
+
<span class="cstat-no" title="statement not covered" > return [];</span>
|
|
848
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
849
|
+
|
|
850
|
+
// All non-empty strings have at least TWO boundaries: at the start and at the end of
|
|
851
|
+
// the string.
|
|
852
|
+
let spans = [];
|
|
853
|
+
for (let i = 0; i < boundaries.length - 1; i++) {
|
|
854
|
+
let start = boundaries[i];
|
|
855
|
+
let end = boundaries[i + 1];
|
|
856
|
+
let span = new LazySpan(text, start, end);
|
|
857
|
+
|
|
858
|
+
if (isNonSpace(span.text)) {
|
|
859
|
+
spans.push(span);
|
|
860
|
+
// Preserve a sequence-final space if it exists. Needed to signal "end of word".
|
|
861
|
+
} else if (i == boundaries.length - 2) <span class="branch-0 cbranch-no" title="branch not covered" >{ // if "we just checked the final boundary"...</span>
|
|
862
|
+
<span class="cstat-no" title="statement not covered" > // We don't want to return the whitespace itself; the correct token is simply ''.</span>
|
|
863
|
+
<span class="cstat-no" title="statement not covered" > span = new LazySpan(text, end, end);</span>
|
|
864
|
+
<span class="cstat-no" title="statement not covered" > spans.push(span);</span>
|
|
865
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
866
|
+
}
|
|
867
|
+
return spans;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
// Utilities //
|
|
871
|
+
// type WordBreakProperty = data.WordBreakProperty;
|
|
872
|
+
// const WordBreakProperty = data.WordBreakProperty;
|
|
873
|
+
// type I = data.I;
|
|
874
|
+
// const I = data.I;
|
|
875
|
+
// const WORD_BREAK_PROPERTY = data.WORD_BREAK_PROPERTY;
|
|
876
|
+
|
|
877
|
+
/**
|
|
878
|
+
* A span that does not cut out the substring until it absolutely has to!
|
|
879
|
+
*/
|
|
880
|
+
class LazySpan implements Span {
|
|
881
|
+
private _source: string;
|
|
882
|
+
readonly start: number;
|
|
883
|
+
readonly end: number;
|
|
884
|
+
constructor(source: string, start: number, end: number) {
|
|
885
|
+
this._source = source;
|
|
886
|
+
this.start = start;
|
|
887
|
+
this.end = end;
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
get text(): string {
|
|
891
|
+
return this._source.substring(this.start, this.end);
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
get length(): number {
|
|
895
|
+
return this.end - this.start;
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
/**
|
|
900
|
+
* Returns true when the chunk does not solely consist of whitespace.
|
|
901
|
+
*
|
|
902
|
+
* @param chunk a chunk of text. Starts and ends at word boundaries.
|
|
903
|
+
*/
|
|
904
|
+
function isNonSpace(chunk: string): boolean {
|
|
905
|
+
return !Array.from(chunk).map(property).every(wb => (
|
|
906
|
+
wb === WordBreakProperty.CR ||
|
|
907
|
+
wb === WordBreakProperty.LF ||
|
|
908
|
+
wb === WordBreakProperty.Newline ||
|
|
909
|
+
wb === WordBreakProperty.WSegSpace
|
|
910
|
+
));
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
/**
|
|
914
|
+
* Yields a series of string indices where a word break should
|
|
915
|
+
* occur. That is, there should be a break BEFORE each string
|
|
916
|
+
* index yielded by this generator.
|
|
917
|
+
*
|
|
918
|
+
* @param text Text to find word boundaries in.
|
|
919
|
+
*/
|
|
920
|
+
function findBoundaries(text: string): number[] {
|
|
921
|
+
// WB1 and WB2: no boundaries if given an empty string.
|
|
922
|
+
if (text.length === 0) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
923
|
+
<span class="cstat-no" title="statement not covered" > // There are no boundaries in an empty string!</span>
|
|
924
|
+
<span class="cstat-no" title="statement not covered" > return [];</span>
|
|
925
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
926
|
+
|
|
927
|
+
// This algorithm works by maintaining a sliding window of four SCALAR VALUES.
|
|
928
|
+
//
|
|
929
|
+
// - Scalar values? JavaScript strings are NOT actually a string of
|
|
930
|
+
// Unicode code points; some characters are made up of TWO
|
|
931
|
+
// JavaScript indices. e.g.,
|
|
932
|
+
// "💩".length === 2;
|
|
933
|
+
// "💩"[0] === '\uD83D';
|
|
934
|
+
// "💩"[1] === '\uDCA9';
|
|
935
|
+
//
|
|
936
|
+
// These characters that are represented by TWO indices are
|
|
937
|
+
// called "surrogate pairs". Since we don't want to be in the
|
|
938
|
+
// "middle" of a character, make sure we're always advancing
|
|
939
|
+
// by scalar values, and NOT indices. That means, we sometimes
|
|
940
|
+
// need to advance by TWO indices, not just one.
|
|
941
|
+
// - Four values? Some rules look at what's to the left of
|
|
942
|
+
// left, and some look at what's to the right of right. So
|
|
943
|
+
// keep track of this!
|
|
944
|
+
|
|
945
|
+
let boundaries = [];
|
|
946
|
+
|
|
947
|
+
let rightPos: number;
|
|
948
|
+
let lookaheadPos = 0; // lookahead, one scalar value to the right of right.
|
|
949
|
+
// Before the start of the string is also the start of the string.
|
|
950
|
+
let lookbehind: WordBreakProperty;
|
|
951
|
+
let left = WordBreakProperty.sot;
|
|
952
|
+
let right = WordBreakProperty.sot;
|
|
953
|
+
let lookahead = wordbreakPropertyAt(0);
|
|
954
|
+
// Count RIs to make sure we're not splitting emoji flags:
|
|
955
|
+
let nConsecutiveRegionalIndicators = 0;
|
|
956
|
+
|
|
957
|
+
do {
|
|
958
|
+
// Shift all positions, one scalar value to the right.
|
|
959
|
+
rightPos = lookaheadPos;
|
|
960
|
+
lookaheadPos = positionAfter(lookaheadPos);
|
|
961
|
+
// Shift all properties, one scalar value to the right.
|
|
962
|
+
[lookbehind, left, right, lookahead] =
|
|
963
|
+
[left, right, lookahead, wordbreakPropertyAt(lookaheadPos)];
|
|
964
|
+
|
|
965
|
+
// Break at the start and end of text, unless the text is empty.
|
|
966
|
+
// WB1: Break at start of text...
|
|
967
|
+
if (left === WordBreakProperty.sot) {
|
|
968
|
+
boundaries.push(rightPos);
|
|
969
|
+
continue;
|
|
970
|
+
}
|
|
971
|
+
// WB2: Break at the end of text...
|
|
972
|
+
if (right === WordBreakProperty.eot) {
|
|
973
|
+
boundaries.push(rightPos);
|
|
974
|
+
break; // Reached the end of the string. We're done!
|
|
975
|
+
}
|
|
976
|
+
// WB3: Do not break within CRLF:
|
|
977
|
+
if (left === WordBreakProperty.CR<span class="branch-0 cbranch-no" title="branch not covered" > && right === WordBreakProperty.LF)</span>
|
|
978
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
979
|
+
// WB3b: Otherwise, break after...
|
|
980
|
+
if (left === WordBreakProperty.Newline ||
|
|
981
|
+
left === WordBreakProperty.CR ||
|
|
982
|
+
left === WordBreakProperty.LF) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
983
|
+
<span class="cstat-no" title="statement not covered" > boundaries.push(rightPos);</span>
|
|
984
|
+
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
985
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
986
|
+
// WB3a: ...and before newlines
|
|
987
|
+
if (right === WordBreakProperty.Newline ||
|
|
988
|
+
right === WordBreakProperty.CR ||
|
|
989
|
+
right === WordBreakProperty.LF) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
990
|
+
<span class="cstat-no" title="statement not covered" > boundaries.push(rightPos);</span>
|
|
991
|
+
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
992
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
993
|
+
|
|
994
|
+
// TODO: WB3c is not implemented, due to its complex, error-prone
|
|
995
|
+
// implementation, requiring a ginormous regexp, and the fact that
|
|
996
|
+
// the only thing it does is prevent big emoji sequences from being
|
|
997
|
+
// split up, like 🧚🏼♂️
|
|
998
|
+
// https://www.unicode.org/Public/emoji/12.0/emoji-zwj-sequences.txt
|
|
999
|
+
|
|
1000
|
+
// WB3d: Keep horizontal whitespace together
|
|
1001
|
+
if (left === WordBreakProperty.WSegSpace && right == WordBreakProperty.WSegSpace)
|
|
1002
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1003
|
+
|
|
1004
|
+
// WB4: Ignore format and extend characters
|
|
1005
|
+
// This is to keep grapheme clusters together!
|
|
1006
|
+
// See: Section 6.2: https://unicode.org/reports/tr29/#Grapheme_Cluster_and_Format_Rules
|
|
1007
|
+
// N.B.: The rule about "except after sot, CR, LF, and
|
|
1008
|
+
// Newline" already been by WB1, WB2, WB3a, and WB3b above.
|
|
1009
|
+
while (right === WordBreakProperty.Format ||
|
|
1010
|
+
right === WordBreakProperty.Extend ||
|
|
1011
|
+
right === WordBreakProperty.ZWJ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1012
|
+
<span class="cstat-no" title="statement not covered" > // Continue advancing in the string, as if these</span>
|
|
1013
|
+
<span class="cstat-no" title="statement not covered" > // characters do not exist. DO NOT update left and</span>
|
|
1014
|
+
<span class="cstat-no" title="statement not covered" > // lookbehind however!</span>
|
|
1015
|
+
<span class="cstat-no" title="statement not covered" > [rightPos, lookaheadPos] = [lookaheadPos, positionAfter(lookaheadPos)];</span>
|
|
1016
|
+
<span class="cstat-no" title="statement not covered" > [right, lookahead] = [lookahead, wordbreakPropertyAt(lookaheadPos)];</span>
|
|
1017
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1018
|
+
// In ignoring the characters in the previous loop, we could
|
|
1019
|
+
// have fallen off the end of the string, so end the loop
|
|
1020
|
+
// prematurely if that happens!
|
|
1021
|
+
if (right === WordBreakProperty.eot) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1022
|
+
<span class="cstat-no" title="statement not covered" > boundaries.push(rightPos);</span>
|
|
1023
|
+
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1024
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1025
|
+
// WB4 (continued): Lookahead must ALSO ignore these format,
|
|
1026
|
+
// extend, ZWJ characters!
|
|
1027
|
+
while (lookahead === WordBreakProperty.Format ||
|
|
1028
|
+
lookahead === WordBreakProperty.Extend ||
|
|
1029
|
+
lookahead === WordBreakProperty.ZWJ) {
|
|
1030
|
+
// Continue advancing in the string, as if these
|
|
1031
|
+
// characters do not exist. DO NOT update left and right,
|
|
1032
|
+
// however!
|
|
1033
|
+
lookaheadPos = positionAfter(lookaheadPos);
|
|
1034
|
+
lookahead = wordbreakPropertyAt(lookaheadPos);
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
// WB5: Do not break between most letters.
|
|
1038
|
+
if (isAHLetter(left) && isAHLetter(right))
|
|
1039
|
+
continue;
|
|
1040
|
+
// Do not break across certain punctuation
|
|
1041
|
+
// WB6: (Don't break before apostrophes in contractions)
|
|
1042
|
+
if (isAHLetter(left) && isAHLetter(lookahead) &&
|
|
1043
|
+
(right === WordBreakProperty.MidLetter || isMidNumLetQ(right)))
|
|
1044
|
+
continue;
|
|
1045
|
+
// WB7: (Don't break after apostrophes in contractions)
|
|
1046
|
+
if (isAHLetter(lookbehind) && isAHLetter(right) &&
|
|
1047
|
+
(left === WordBreakProperty.MidLetter || isMidNumLetQ(left)))
|
|
1048
|
+
continue;
|
|
1049
|
+
// WB7a
|
|
1050
|
+
if (left === WordBreakProperty.Hebrew_Letter<span class="branch-0 cbranch-no" title="branch not covered" > && right === WordBreakProperty.Single_Quote)</span>
|
|
1051
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1052
|
+
// WB7b
|
|
1053
|
+
if (left === WordBreakProperty.Hebrew_Letter<span class="branch-0 cbranch-no" title="branch not covered" > && right === WordBreakProperty.Double_Quote<span class="branch-0 cbranch-no" title="branch not covered" > </span>&&</span>
|
|
1054
|
+
lookahead === WordBreakProperty.Hebrew_Letter)
|
|
1055
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1056
|
+
// WB7c
|
|
1057
|
+
if (lookbehind === WordBreakProperty.Hebrew_Letter<span class="branch-0 cbranch-no" title="branch not covered" > && left === WordBreakProperty.Double_Quote<span class="branch-0 cbranch-no" title="branch not covered" > </span>&&</span>
|
|
1058
|
+
right === WordBreakProperty.Hebrew_Letter)
|
|
1059
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1060
|
+
// Do not break within sequences of digits, or digits adjacent to letters.
|
|
1061
|
+
// e.g., "3a" or "A3"
|
|
1062
|
+
// WB8
|
|
1063
|
+
if (left === WordBreakProperty.Numeric<span class="branch-0 cbranch-no" title="branch not covered" > && right === WordBreakProperty.Numeric)</span>
|
|
1064
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1065
|
+
// WB9
|
|
1066
|
+
if (isAHLetter(left) && right === WordBreakProperty.Numeric)
|
|
1067
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1068
|
+
// WB10
|
|
1069
|
+
if (left === WordBreakProperty.Numeric<span class="branch-0 cbranch-no" title="branch not covered" > && isAHLetter(right))</span>
|
|
1070
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1071
|
+
// Do not break within sequences, such as 3.2, 3,456.789
|
|
1072
|
+
// WB11
|
|
1073
|
+
if (lookbehind === WordBreakProperty.Numeric<span class="branch-0 cbranch-no" title="branch not covered" > && right === WordBreakProperty.Numeric<span class="branch-0 cbranch-no" title="branch not covered" > </span>&&</span>
|
|
1074
|
+
(left === WordBreakProperty.MidNum || isMidNumLetQ(left)))
|
|
1075
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1076
|
+
// WB12
|
|
1077
|
+
if (left === WordBreakProperty.Numeric<span class="branch-0 cbranch-no" title="branch not covered" > && lookahead === WordBreakProperty.Numeric<span class="branch-0 cbranch-no" title="branch not covered" > </span>&&</span>
|
|
1078
|
+
(right === WordBreakProperty.MidNum || isMidNumLetQ(right)))
|
|
1079
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1080
|
+
// WB13: Do not break between Katakana
|
|
1081
|
+
if (left === WordBreakProperty.Katakana<span class="branch-0 cbranch-no" title="branch not covered" > && right === WordBreakProperty.Katakana)</span>
|
|
1082
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1083
|
+
// Do not break from extenders (e.g., U+202F NARROW NO-BREAK SPACE)
|
|
1084
|
+
// WB13a
|
|
1085
|
+
if ((isAHLetter(left) ||
|
|
1086
|
+
left === WordBreakProperty.Numeric ||
|
|
1087
|
+
left === WordBreakProperty.Katakana ||
|
|
1088
|
+
left === WordBreakProperty.ExtendNumLet) &&
|
|
1089
|
+
right === WordBreakProperty.ExtendNumLet)
|
|
1090
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1091
|
+
// WB13b
|
|
1092
|
+
if ((isAHLetter(right) ||
|
|
1093
|
+
right === WordBreakProperty.Numeric ||
|
|
1094
|
+
right === WordBreakProperty.Katakana) && left === WordBreakProperty.ExtendNumLet)
|
|
1095
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > continue;</span>
|
|
1096
|
+
|
|
1097
|
+
// WB15 & WB16:
|
|
1098
|
+
// Do not break within emoji flag sequences. That is, do not break between
|
|
1099
|
+
// regional indicator (RI) symbols if there is an odd number of RI
|
|
1100
|
+
// characters before the break point.
|
|
1101
|
+
if (right === WordBreakProperty.Regional_Indicator) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1102
|
+
<span class="cstat-no" title="statement not covered" > // Emoji flags are actually composed of TWO scalar values, each being a</span>
|
|
1103
|
+
<span class="cstat-no" title="statement not covered" > // "regional indicator". These indicators correspond to Latin letters. Put</span>
|
|
1104
|
+
<span class="cstat-no" title="statement not covered" > // two of them together, and they spell out an ISO 3166-1-alpha-2 country</span>
|
|
1105
|
+
<span class="cstat-no" title="statement not covered" > // code. Since these always come in pairs, NEVER split the pairs! So, if</span>
|
|
1106
|
+
<span class="cstat-no" title="statement not covered" > // we happen to be inside the middle of an odd numbered of</span>
|
|
1107
|
+
<span class="cstat-no" title="statement not covered" > // Regional_Indicators, DON'T SPLIT IT!</span>
|
|
1108
|
+
<span class="cstat-no" title="statement not covered" > nConsecutiveRegionalIndicators += 1;</span>
|
|
1109
|
+
<span class="cstat-no" title="statement not covered" > if ((nConsecutiveRegionalIndicators % 2) == 1) {</span>
|
|
1110
|
+
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
1111
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1112
|
+
} else {
|
|
1113
|
+
nConsecutiveRegionalIndicators = 0;
|
|
1114
|
+
}
|
|
1115
|
+
// WB999: Otherwise, break EVERYWHERE (including around ideographs)
|
|
1116
|
+
boundaries.push(rightPos);
|
|
1117
|
+
} while (rightPos < text.length);
|
|
1118
|
+
|
|
1119
|
+
return boundaries;
|
|
1120
|
+
|
|
1121
|
+
///// Internal utility functions /////
|
|
1122
|
+
|
|
1123
|
+
/**
|
|
1124
|
+
* Returns the position of the start of the next scalar value. This jumps
|
|
1125
|
+
* over surrogate pairs.
|
|
1126
|
+
*
|
|
1127
|
+
* If asked for the character AFTER the end of the string, this always
|
|
1128
|
+
* returns the length of the string.
|
|
1129
|
+
*/
|
|
1130
|
+
function positionAfter(pos: number): number {
|
|
1131
|
+
if (pos >= text.length) {
|
|
1132
|
+
return text.length;
|
|
1133
|
+
} else if (isStartOfSurrogatePair(text[pos])) {
|
|
1134
|
+
return pos + 2;
|
|
1135
|
+
}
|
|
1136
|
+
return pos + 1;
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
/**
|
|
1140
|
+
* Return the value of the Word_Break property at the given string index.
|
|
1141
|
+
* @param pos position in the text.
|
|
1142
|
+
*/
|
|
1143
|
+
function wordbreakPropertyAt(pos: number) {
|
|
1144
|
+
if (pos < 0) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1145
|
+
<span class="cstat-no" title="statement not covered" > return WordBreakProperty.sot; // Always "start of string" before the string starts!</span>
|
|
1146
|
+
} else if (pos >= text.length) {
|
|
1147
|
+
return WordBreakProperty.eot; // Always "end of string" after the string ends!
|
|
1148
|
+
} else if (isStartOfSurrogatePair(text[pos])) {
|
|
1149
|
+
// Surrogate pairs the next TWO items from the string!
|
|
1150
|
+
return property(text[pos] + text[pos + 1]);
|
|
1151
|
+
}
|
|
1152
|
+
return property(text[pos]);
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
// Word_Break rule macros
|
|
1156
|
+
// See: https://unicode.org/reports/tr29/#WB_Rule_Macros
|
|
1157
|
+
function isAHLetter(prop: WordBreakProperty): boolean {
|
|
1158
|
+
return prop === WordBreakProperty.ALetter ||
|
|
1159
|
+
prop === WordBreakProperty.Hebrew_Letter;
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
function isMidNumLetQ(prop: WordBreakProperty): boolean {
|
|
1163
|
+
return prop === WordBreakProperty.MidNumLet ||
|
|
1164
|
+
prop === WordBreakProperty.Single_Quote;
|
|
1165
|
+
}
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
function isStartOfSurrogatePair(character: string) {
|
|
1169
|
+
let codeUnit = character.charCodeAt(0);
|
|
1170
|
+
return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
/**
|
|
1174
|
+
* Return the Word_Break property value for a character.
|
|
1175
|
+
* Note that
|
|
1176
|
+
* @param character a scalar value
|
|
1177
|
+
*/
|
|
1178
|
+
function property(character: string): WordBreakProperty {
|
|
1179
|
+
// This MUST be a scalar value.
|
|
1180
|
+
// TODO: remove dependence on character.codepointAt()?
|
|
1181
|
+
let codepoint = character.codePointAt(0) as number;
|
|
1182
|
+
return searchForProperty(codepoint, 0, WORD_BREAK_PROPERTY.length - 1);
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
/**
|
|
1186
|
+
* Binary search for the word break property of a given CODE POINT.
|
|
1187
|
+
*
|
|
1188
|
+
* The auto-generated data.ts master array defines a **character range**
|
|
1189
|
+
* lookup table. If a character's codepoint is equal to or greater than
|
|
1190
|
+
* the I.Start value for an entry and exclusively less than the next entry,
|
|
1191
|
+
* it falls in the first entry's range bucket and is classified accordingly
|
|
1192
|
+
* by this method.
|
|
1193
|
+
*/
|
|
1194
|
+
function searchForProperty(codePoint: number, left: number, right: number): WordBreakProperty {
|
|
1195
|
+
// All items that are not found in the array are assigned the 'Other' property.
|
|
1196
|
+
if (right < left) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1197
|
+
<span class="cstat-no" title="statement not covered" > return WordBreakProperty.Other;</span>
|
|
1198
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1199
|
+
|
|
1200
|
+
let midpoint = left + ~~((right - left) / 2);
|
|
1201
|
+
let candidate = WORD_BREAK_PROPERTY[midpoint];
|
|
1202
|
+
|
|
1203
|
+
let nextRange = WORD_BREAK_PROPERTY[midpoint + 1];
|
|
1204
|
+
let startOfNextRange = nextRange ? nextRange[I.Start] <span class="branch-0 cbranch-no" title="branch not covered" >: Infinity;</span>
|
|
1205
|
+
|
|
1206
|
+
if (codePoint < candidate[I.Start]) {
|
|
1207
|
+
return searchForProperty(codePoint, left, midpoint - 1);
|
|
1208
|
+
} else if (codePoint >= startOfNextRange) {
|
|
1209
|
+
return searchForProperty(codePoint, midpoint + 1, right);
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
// We found it!
|
|
1213
|
+
return candidate[I.Value];
|
|
1214
|
+
}
|
|
1215
|
+
</pre></td></tr></table></pre>
|
|
1216
|
+
|
|
1217
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
1218
|
+
</div><!-- /wrapper -->
|
|
1219
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
1220
|
+
Code coverage generated by
|
|
1221
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1222
|
+
at 2023-04-11T18:53:57.094Z
|
|
1223
|
+
</div>
|
|
1224
|
+
<script src="../../prettify.js"></script>
|
|
1225
|
+
<script>
|
|
1226
|
+
window.onload = function () {
|
|
1227
|
+
prettyPrint();
|
|
1228
|
+
};
|
|
1229
|
+
</script>
|
|
1230
|
+
<script src="../../sorter.js"></script>
|
|
1231
|
+
<script src="../../block-navigation.js"></script>
|
|
1232
|
+
</body>
|
|
1233
|
+
</html>
|
|
1234
|
+
|