@md2do/core 0.3.0 → 0.5.1
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/CHANGELOG.md +38 -0
- package/README.md +6 -6
- package/dist/index.d.mts +40 -10
- package/dist/index.d.ts +40 -10
- package/dist/index.js +59 -11
- package/dist/index.mjs +61 -12
- package/package.json +1 -1
- package/src/parser/index.ts +28 -5
- package/src/parser/patterns.ts +8 -5
- package/src/scanner/index.ts +17 -0
- package/src/types/index.ts +4 -0
- package/src/utils/dates.ts +58 -10
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/coverage-final.json +0 -10
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -206
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -206
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov-report/src/filters/index.html +0 -116
- package/coverage/lcov-report/src/filters/index.ts.html +0 -1156
- package/coverage/lcov-report/src/index.html +0 -116
- package/coverage/lcov-report/src/index.ts.html +0 -157
- package/coverage/lcov-report/src/parser/index.html +0 -131
- package/coverage/lcov-report/src/parser/index.ts.html +0 -1102
- package/coverage/lcov-report/src/parser/patterns.ts.html +0 -661
- package/coverage/lcov-report/src/scanner/index.html +0 -116
- package/coverage/lcov-report/src/scanner/index.ts.html +0 -658
- package/coverage/lcov-report/src/sorting/index.html +0 -116
- package/coverage/lcov-report/src/sorting/index.ts.html +0 -736
- package/coverage/lcov-report/src/utils/dates.ts.html +0 -499
- package/coverage/lcov-report/src/utils/id.ts.html +0 -169
- package/coverage/lcov-report/src/utils/index.html +0 -131
- package/coverage/lcov-report/src/writer/index.html +0 -116
- package/coverage/lcov-report/src/writer/index.ts.html +0 -1093
- package/coverage/lcov.info +0 -2294
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/src/filters/index.html +0 -116
- package/coverage/src/filters/index.ts.html +0 -1156
- package/coverage/src/index.html +0 -116
- package/coverage/src/index.ts.html +0 -157
- package/coverage/src/parser/index.html +0 -131
- package/coverage/src/parser/index.ts.html +0 -1102
- package/coverage/src/parser/patterns.ts.html +0 -661
- package/coverage/src/scanner/index.html +0 -116
- package/coverage/src/scanner/index.ts.html +0 -658
- package/coverage/src/sorting/index.html +0 -116
- package/coverage/src/sorting/index.ts.html +0 -736
- package/coverage/src/utils/dates.ts.html +0 -499
- package/coverage/src/utils/id.ts.html +0 -169
- package/coverage/src/utils/index.html +0 -131
- package/coverage/src/writer/index.html +0 -116
- package/coverage/src/writer/index.ts.html +0 -1093
|
@@ -1,1102 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/parser/index.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/parser</a> index.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'>339/339</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">96.05% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>73/76</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'>339/339</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 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></td><td class="line-coverage quiet"><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">1x</span>
|
|
418
|
-
<span class="cline-any cline-yes">1x</span>
|
|
419
|
-
<span class="cline-any cline-yes">1x</span>
|
|
420
|
-
<span class="cline-any cline-yes">1x</span>
|
|
421
|
-
<span class="cline-any cline-yes">1x</span>
|
|
422
|
-
<span class="cline-any cline-yes">1x</span>
|
|
423
|
-
<span class="cline-any cline-yes">1x</span>
|
|
424
|
-
<span class="cline-any cline-yes">1x</span>
|
|
425
|
-
<span class="cline-any cline-yes">1x</span>
|
|
426
|
-
<span class="cline-any cline-yes">124x</span>
|
|
427
|
-
<span class="cline-any cline-yes">124x</span>
|
|
428
|
-
<span class="cline-any cline-yes">124x</span>
|
|
429
|
-
<span class="cline-any cline-yes">1x</span>
|
|
430
|
-
<span class="cline-any cline-yes">1x</span>
|
|
431
|
-
<span class="cline-any cline-yes">1x</span>
|
|
432
|
-
<span class="cline-any cline-yes">1x</span>
|
|
433
|
-
<span class="cline-any cline-yes">1x</span>
|
|
434
|
-
<span class="cline-any cline-yes">1x</span>
|
|
435
|
-
<span class="cline-any cline-yes">1x</span>
|
|
436
|
-
<span class="cline-any cline-yes">1x</span>
|
|
437
|
-
<span class="cline-any cline-yes">1x</span>
|
|
438
|
-
<span class="cline-any cline-yes">1x</span>
|
|
439
|
-
<span class="cline-any cline-yes">1x</span>
|
|
440
|
-
<span class="cline-any cline-yes">1x</span>
|
|
441
|
-
<span class="cline-any cline-yes">1x</span>
|
|
442
|
-
<span class="cline-any cline-yes">1x</span>
|
|
443
|
-
<span class="cline-any cline-yes">125x</span>
|
|
444
|
-
<span class="cline-any cline-yes">125x</span>
|
|
445
|
-
<span class="cline-any cline-yes">125x</span>
|
|
446
|
-
<span class="cline-any cline-yes">108x</span>
|
|
447
|
-
<span class="cline-any cline-yes">108x</span>
|
|
448
|
-
<span class="cline-any cline-yes">1x</span>
|
|
449
|
-
<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">124x</span>
|
|
461
|
-
<span class="cline-any cline-yes">124x</span>
|
|
462
|
-
<span class="cline-any cline-yes">124x</span>
|
|
463
|
-
<span class="cline-any cline-yes">124x</span>
|
|
464
|
-
<span class="cline-any cline-yes">124x</span>
|
|
465
|
-
<span class="cline-any cline-yes">1x</span>
|
|
466
|
-
<span class="cline-any cline-yes">1x</span>
|
|
467
|
-
<span class="cline-any cline-yes">1x</span>
|
|
468
|
-
<span class="cline-any cline-yes">1x</span>
|
|
469
|
-
<span class="cline-any cline-yes">1x</span>
|
|
470
|
-
<span class="cline-any cline-yes">1x</span>
|
|
471
|
-
<span class="cline-any cline-yes">1x</span>
|
|
472
|
-
<span class="cline-any cline-yes">1x</span>
|
|
473
|
-
<span class="cline-any cline-yes">1x</span>
|
|
474
|
-
<span class="cline-any cline-yes">1x</span>
|
|
475
|
-
<span class="cline-any cline-yes">1x</span>
|
|
476
|
-
<span class="cline-any cline-yes">123x</span>
|
|
477
|
-
<span class="cline-any cline-yes">123x</span>
|
|
478
|
-
<span class="cline-any cline-yes">123x</span>
|
|
479
|
-
<span class="cline-any cline-yes">1x</span>
|
|
480
|
-
<span class="cline-any cline-yes">1x</span>
|
|
481
|
-
<span class="cline-any cline-yes">1x</span>
|
|
482
|
-
<span class="cline-any cline-yes">1x</span>
|
|
483
|
-
<span class="cline-any cline-yes">1x</span>
|
|
484
|
-
<span class="cline-any cline-yes">1x</span>
|
|
485
|
-
<span class="cline-any cline-yes">1x</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">123x</span>
|
|
491
|
-
<span class="cline-any cline-yes">123x</span>
|
|
492
|
-
<span class="cline-any cline-yes">8x</span>
|
|
493
|
-
<span class="cline-any cline-yes">8x</span>
|
|
494
|
-
<span class="cline-any cline-yes">115x</span>
|
|
495
|
-
<span class="cline-any cline-yes">123x</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">1x</span>
|
|
503
|
-
<span class="cline-any cline-yes">1x</span>
|
|
504
|
-
<span class="cline-any cline-yes">1x</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">129x</span>
|
|
509
|
-
<span class="cline-any cline-yes">129x</span>
|
|
510
|
-
<span class="cline-any cline-yes">129x</span>
|
|
511
|
-
<span class="cline-any cline-yes">129x</span>
|
|
512
|
-
<span class="cline-any cline-yes">129x</span>
|
|
513
|
-
<span class="cline-any cline-yes">129x</span>
|
|
514
|
-
<span class="cline-any cline-yes">23x</span>
|
|
515
|
-
<span class="cline-any cline-yes">23x</span>
|
|
516
|
-
<span class="cline-any cline-yes">23x</span>
|
|
517
|
-
<span class="cline-any cline-yes">106x</span>
|
|
518
|
-
<span class="cline-any cline-yes">106x</span>
|
|
519
|
-
<span class="cline-any cline-yes">106x</span>
|
|
520
|
-
<span class="cline-any cline-yes">129x</span>
|
|
521
|
-
<span class="cline-any cline-yes">5x</span>
|
|
522
|
-
<span class="cline-any cline-yes">5x</span>
|
|
523
|
-
<span class="cline-any cline-yes">5x</span>
|
|
524
|
-
<span class="cline-any cline-yes">101x</span>
|
|
525
|
-
<span class="cline-any cline-yes">101x</span>
|
|
526
|
-
<span class="cline-any cline-yes">101x</span>
|
|
527
|
-
<span class="cline-any cline-yes">129x</span>
|
|
528
|
-
<span class="cline-any cline-yes">19x</span>
|
|
529
|
-
<span class="cline-any cline-yes">6x</span>
|
|
530
|
-
<span class="cline-any cline-yes">6x</span>
|
|
531
|
-
<span class="cline-any cline-yes">6x</span>
|
|
532
|
-
<span class="cline-any cline-yes">6x</span>
|
|
533
|
-
<span class="cline-any cline-yes">6x</span>
|
|
534
|
-
<span class="cline-any cline-yes">6x</span>
|
|
535
|
-
<span class="cline-any cline-yes">6x</span>
|
|
536
|
-
<span class="cline-any cline-yes">6x</span>
|
|
537
|
-
<span class="cline-any cline-yes">6x</span>
|
|
538
|
-
<span class="cline-any cline-yes">6x</span>
|
|
539
|
-
<span class="cline-any cline-yes">6x</span>
|
|
540
|
-
<span class="cline-any cline-yes">6x</span>
|
|
541
|
-
<span class="cline-any cline-yes">13x</span>
|
|
542
|
-
<span class="cline-any cline-yes">13x</span>
|
|
543
|
-
<span class="cline-any cline-yes">19x</span>
|
|
544
|
-
<span class="cline-any cline-yes">19x</span>
|
|
545
|
-
<span class="cline-any cline-yes">82x</span>
|
|
546
|
-
<span class="cline-any cline-yes">82x</span>
|
|
547
|
-
<span class="cline-any cline-yes">82x</span>
|
|
548
|
-
<span class="cline-any cline-yes">1x</span>
|
|
549
|
-
<span class="cline-any cline-yes">1x</span>
|
|
550
|
-
<span class="cline-any cline-yes">1x</span>
|
|
551
|
-
<span class="cline-any cline-yes">1x</span>
|
|
552
|
-
<span class="cline-any cline-yes">1x</span>
|
|
553
|
-
<span class="cline-any cline-yes">1x</span>
|
|
554
|
-
<span class="cline-any cline-yes">1x</span>
|
|
555
|
-
<span class="cline-any cline-yes">1x</span>
|
|
556
|
-
<span class="cline-any cline-yes">1x</span>
|
|
557
|
-
<span class="cline-any cline-yes">1x</span>
|
|
558
|
-
<span class="cline-any cline-yes">1x</span>
|
|
559
|
-
<span class="cline-any cline-yes">1x</span>
|
|
560
|
-
<span class="cline-any cline-yes">1x</span>
|
|
561
|
-
<span class="cline-any cline-yes">1x</span>
|
|
562
|
-
<span class="cline-any cline-yes">1x</span>
|
|
563
|
-
<span class="cline-any cline-yes">1x</span>
|
|
564
|
-
<span class="cline-any cline-yes">1x</span>
|
|
565
|
-
<span class="cline-any cline-yes">1x</span>
|
|
566
|
-
<span class="cline-any cline-yes">1x</span>
|
|
567
|
-
<span class="cline-any cline-yes">1x</span>
|
|
568
|
-
<span class="cline-any cline-yes">132x</span>
|
|
569
|
-
<span class="cline-any cline-yes">132x</span>
|
|
570
|
-
<span class="cline-any cline-yes">132x</span>
|
|
571
|
-
<span class="cline-any cline-yes">132x</span>
|
|
572
|
-
<span class="cline-any cline-yes">132x</span>
|
|
573
|
-
<span class="cline-any cline-yes">132x</span>
|
|
574
|
-
<span class="cline-any cline-yes">132x</span>
|
|
575
|
-
<span class="cline-any cline-yes">132x</span>
|
|
576
|
-
<span class="cline-any cline-yes">132x</span>
|
|
577
|
-
<span class="cline-any cline-yes">132x</span>
|
|
578
|
-
<span class="cline-any cline-yes">132x</span>
|
|
579
|
-
<span class="cline-any cline-yes">132x</span>
|
|
580
|
-
<span class="cline-any cline-yes">132x</span>
|
|
581
|
-
<span class="cline-any cline-yes">132x</span>
|
|
582
|
-
<span class="cline-any cline-yes">132x</span>
|
|
583
|
-
<span class="cline-any cline-yes">132x</span>
|
|
584
|
-
<span class="cline-any cline-yes">132x</span>
|
|
585
|
-
<span class="cline-any cline-yes">132x</span>
|
|
586
|
-
<span class="cline-any cline-yes">132x</span>
|
|
587
|
-
<span class="cline-any cline-yes">132x</span>
|
|
588
|
-
<span class="cline-any cline-yes">132x</span>
|
|
589
|
-
<span class="cline-any cline-yes">1x</span>
|
|
590
|
-
<span class="cline-any cline-yes">1x</span>
|
|
591
|
-
<span class="cline-any cline-yes">1x</span>
|
|
592
|
-
<span class="cline-any cline-yes">1x</span>
|
|
593
|
-
<span class="cline-any cline-yes">1x</span>
|
|
594
|
-
<span class="cline-any cline-yes">1x</span>
|
|
595
|
-
<span class="cline-any cline-yes">1x</span>
|
|
596
|
-
<span class="cline-any cline-yes">1x</span>
|
|
597
|
-
<span class="cline-any cline-yes">1x</span>
|
|
598
|
-
<span class="cline-any cline-yes">1x</span>
|
|
599
|
-
<span class="cline-any cline-yes">1x</span>
|
|
600
|
-
<span class="cline-any cline-yes">1x</span>
|
|
601
|
-
<span class="cline-any cline-yes">1x</span>
|
|
602
|
-
<span class="cline-any cline-yes">1x</span>
|
|
603
|
-
<span class="cline-any cline-yes">1x</span>
|
|
604
|
-
<span class="cline-any cline-yes">1x</span>
|
|
605
|
-
<span class="cline-any cline-yes">1x</span>
|
|
606
|
-
<span class="cline-any cline-yes">1x</span>
|
|
607
|
-
<span class="cline-any cline-yes">1x</span>
|
|
608
|
-
<span class="cline-any cline-yes">145x</span>
|
|
609
|
-
<span class="cline-any cline-yes">145x</span>
|
|
610
|
-
<span class="cline-any cline-yes">145x</span>
|
|
611
|
-
<span class="cline-any cline-yes">145x</span>
|
|
612
|
-
<span class="cline-any cline-yes">145x</span>
|
|
613
|
-
<span class="cline-any cline-yes">145x</span>
|
|
614
|
-
<span class="cline-any cline-yes">145x</span>
|
|
615
|
-
<span class="cline-any cline-yes">145x</span>
|
|
616
|
-
<span class="cline-any cline-yes">145x</span>
|
|
617
|
-
<span class="cline-any cline-yes">145x</span>
|
|
618
|
-
<span class="cline-any cline-yes">2x</span>
|
|
619
|
-
<span class="cline-any cline-yes">2x</span>
|
|
620
|
-
<span class="cline-any cline-yes">2x</span>
|
|
621
|
-
<span class="cline-any cline-yes">2x</span>
|
|
622
|
-
<span class="cline-any cline-yes">2x</span>
|
|
623
|
-
<span class="cline-any cline-yes">2x</span>
|
|
624
|
-
<span class="cline-any cline-yes">2x</span>
|
|
625
|
-
<span class="cline-any cline-yes">2x</span>
|
|
626
|
-
<span class="cline-any cline-yes">2x</span>
|
|
627
|
-
<span class="cline-any cline-yes">143x</span>
|
|
628
|
-
<span class="cline-any cline-yes">143x</span>
|
|
629
|
-
<span class="cline-any cline-yes">145x</span>
|
|
630
|
-
<span class="cline-any cline-yes">2x</span>
|
|
631
|
-
<span class="cline-any cline-yes">2x</span>
|
|
632
|
-
<span class="cline-any cline-yes">2x</span>
|
|
633
|
-
<span class="cline-any cline-yes">2x</span>
|
|
634
|
-
<span class="cline-any cline-yes">2x</span>
|
|
635
|
-
<span class="cline-any cline-yes">2x</span>
|
|
636
|
-
<span class="cline-any cline-yes">2x</span>
|
|
637
|
-
<span class="cline-any cline-yes">2x</span>
|
|
638
|
-
<span class="cline-any cline-yes">2x</span>
|
|
639
|
-
<span class="cline-any cline-yes">141x</span>
|
|
640
|
-
<span class="cline-any cline-yes">141x</span>
|
|
641
|
-
<span class="cline-any cline-yes">145x</span>
|
|
642
|
-
<span class="cline-any cline-yes">1x</span>
|
|
643
|
-
<span class="cline-any cline-yes">1x</span>
|
|
644
|
-
<span class="cline-any cline-yes">1x</span>
|
|
645
|
-
<span class="cline-any cline-yes">1x</span>
|
|
646
|
-
<span class="cline-any cline-yes">1x</span>
|
|
647
|
-
<span class="cline-any cline-yes">1x</span>
|
|
648
|
-
<span class="cline-any cline-yes">1x</span>
|
|
649
|
-
<span class="cline-any cline-yes">1x</span>
|
|
650
|
-
<span class="cline-any cline-yes">140x</span>
|
|
651
|
-
<span class="cline-any cline-yes">140x</span>
|
|
652
|
-
<span class="cline-any cline-yes">145x</span>
|
|
653
|
-
<span class="cline-any cline-yes">1x</span>
|
|
654
|
-
<span class="cline-any cline-yes">1x</span>
|
|
655
|
-
<span class="cline-any cline-yes">1x</span>
|
|
656
|
-
<span class="cline-any cline-yes">1x</span>
|
|
657
|
-
<span class="cline-any cline-yes">1x</span>
|
|
658
|
-
<span class="cline-any cline-yes">1x</span>
|
|
659
|
-
<span class="cline-any cline-yes">1x</span>
|
|
660
|
-
<span class="cline-any cline-yes">1x</span>
|
|
661
|
-
<span class="cline-any cline-yes">139x</span>
|
|
662
|
-
<span class="cline-any cline-yes">139x</span>
|
|
663
|
-
<span class="cline-any cline-yes">139x</span>
|
|
664
|
-
<span class="cline-any cline-yes">145x</span>
|
|
665
|
-
<span class="cline-any cline-yes">20x</span>
|
|
666
|
-
<span class="cline-any cline-yes">20x</span>
|
|
667
|
-
<span class="cline-any cline-yes">119x</span>
|
|
668
|
-
<span class="cline-any cline-yes">119x</span>
|
|
669
|
-
<span class="cline-any cline-yes">119x</span>
|
|
670
|
-
<span class="cline-any cline-yes">119x</span>
|
|
671
|
-
<span class="cline-any cline-yes">119x</span>
|
|
672
|
-
<span class="cline-any cline-yes">119x</span>
|
|
673
|
-
<span class="cline-any cline-yes">119x</span>
|
|
674
|
-
<span class="cline-any cline-yes">119x</span>
|
|
675
|
-
<span class="cline-any cline-yes">119x</span>
|
|
676
|
-
<span class="cline-any cline-yes">119x</span>
|
|
677
|
-
<span class="cline-any cline-yes">119x</span>
|
|
678
|
-
<span class="cline-any cline-yes">119x</span>
|
|
679
|
-
<span class="cline-any cline-yes">119x</span>
|
|
680
|
-
<span class="cline-any cline-yes">119x</span>
|
|
681
|
-
<span class="cline-any cline-yes">119x</span>
|
|
682
|
-
<span class="cline-any cline-yes">119x</span>
|
|
683
|
-
<span class="cline-any cline-yes">145x</span>
|
|
684
|
-
<span class="cline-any cline-yes">4x</span>
|
|
685
|
-
<span class="cline-any cline-yes">4x</span>
|
|
686
|
-
<span class="cline-any cline-yes">4x</span>
|
|
687
|
-
<span class="cline-any cline-yes">4x</span>
|
|
688
|
-
<span class="cline-any cline-yes">4x</span>
|
|
689
|
-
<span class="cline-any cline-yes">4x</span>
|
|
690
|
-
<span class="cline-any cline-yes">119x</span>
|
|
691
|
-
<span class="cline-any cline-yes">119x</span>
|
|
692
|
-
<span class="cline-any cline-yes">119x</span>
|
|
693
|
-
<span class="cline-any cline-yes">145x</span>
|
|
694
|
-
<span class="cline-any cline-yes">58x</span>
|
|
695
|
-
<span class="cline-any cline-yes">58x</span>
|
|
696
|
-
<span class="cline-any cline-yes">58x</span>
|
|
697
|
-
<span class="cline-any cline-yes">58x</span>
|
|
698
|
-
<span class="cline-any cline-yes">58x</span>
|
|
699
|
-
<span class="cline-any cline-yes">58x</span>
|
|
700
|
-
<span class="cline-any cline-yes">58x</span>
|
|
701
|
-
<span class="cline-any cline-yes">58x</span>
|
|
702
|
-
<span class="cline-any cline-yes">119x</span>
|
|
703
|
-
<span class="cline-any cline-yes">119x</span>
|
|
704
|
-
<span class="cline-any cline-yes">145x</span>
|
|
705
|
-
<span class="cline-any cline-yes">8x</span>
|
|
706
|
-
<span class="cline-any cline-yes">8x</span>
|
|
707
|
-
<span class="cline-any cline-yes">8x</span>
|
|
708
|
-
<span class="cline-any cline-yes">8x</span>
|
|
709
|
-
<span class="cline-any cline-yes">8x</span>
|
|
710
|
-
<span class="cline-any cline-yes">8x</span>
|
|
711
|
-
<span class="cline-any cline-yes">8x</span>
|
|
712
|
-
<span class="cline-any cline-yes">8x</span>
|
|
713
|
-
<span class="cline-any cline-yes">119x</span>
|
|
714
|
-
<span class="cline-any cline-yes">119x</span>
|
|
715
|
-
<span class="cline-any cline-yes">119x</span>
|
|
716
|
-
<span class="cline-any cline-yes">119x</span>
|
|
717
|
-
<span class="cline-any cline-yes">119x</span>
|
|
718
|
-
<span class="cline-any cline-yes">119x</span>
|
|
719
|
-
<span class="cline-any cline-yes">119x</span>
|
|
720
|
-
<span class="cline-any cline-yes">119x</span>
|
|
721
|
-
<span class="cline-any cline-yes">119x</span>
|
|
722
|
-
<span class="cline-any cline-yes">119x</span>
|
|
723
|
-
<span class="cline-any cline-yes">119x</span>
|
|
724
|
-
<span class="cline-any cline-yes">119x</span>
|
|
725
|
-
<span class="cline-any cline-yes">119x</span>
|
|
726
|
-
<span class="cline-any cline-yes">119x</span>
|
|
727
|
-
<span class="cline-any cline-yes">119x</span>
|
|
728
|
-
<span class="cline-any cline-yes">119x</span>
|
|
729
|
-
<span class="cline-any cline-yes">119x</span>
|
|
730
|
-
<span class="cline-any cline-yes">119x</span>
|
|
731
|
-
<span class="cline-any cline-yes">145x</span>
|
|
732
|
-
<span class="cline-any cline-yes">145x</span>
|
|
733
|
-
<span class="cline-any cline-yes">145x</span>
|
|
734
|
-
<span class="cline-any cline-yes">145x</span>
|
|
735
|
-
<span class="cline-any cline-yes">145x</span>
|
|
736
|
-
<span class="cline-any cline-yes">145x</span>
|
|
737
|
-
<span class="cline-any cline-yes">145x</span>
|
|
738
|
-
<span class="cline-any cline-yes">145x</span>
|
|
739
|
-
<span class="cline-any cline-yes">119x</span>
|
|
740
|
-
<span class="cline-any cline-yes">145x</span>
|
|
741
|
-
<span class="cline-any cline-yes">119x</span>
|
|
742
|
-
<span class="cline-any cline-yes">119x</span>
|
|
743
|
-
<span class="cline-any cline-yes">119x</span>
|
|
744
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type {
|
|
745
|
-
Task,
|
|
746
|
-
ParsingContext,
|
|
747
|
-
Priority,
|
|
748
|
-
Warning,
|
|
749
|
-
} from '../types/index.js';
|
|
750
|
-
import { PATTERNS } from './patterns.js';
|
|
751
|
-
import { parseAbsoluteDate, resolveRelativeDate } from '../utils/dates.js';
|
|
752
|
-
import { generateTaskId } from '../utils/id.js';
|
|
753
|
-
|
|
754
|
-
/**
|
|
755
|
-
* Extract assignee from task text
|
|
756
|
-
*
|
|
757
|
-
* @param text - Task text
|
|
758
|
-
* @returns Username without @ symbol, or undefined
|
|
759
|
-
*
|
|
760
|
-
* @example
|
|
761
|
-
* extractAssignee("@nick Review PR") // => "nick"
|
|
762
|
-
* extractAssignee("Review PR") // => undefined
|
|
763
|
-
*/
|
|
764
|
-
export function extractAssignee(text: string): string | undefined {
|
|
765
|
-
const match = text.match(PATTERNS.ASSIGNEE);
|
|
766
|
-
return match?.[1];
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
/**
|
|
770
|
-
* Extract priority level from task text
|
|
771
|
-
*
|
|
772
|
-
* Priority is determined by exclamation marks:
|
|
773
|
-
* - !!! = urgent
|
|
774
|
-
* - !! = high
|
|
775
|
-
* - ! = normal
|
|
776
|
-
* - (none) = low
|
|
777
|
-
*
|
|
778
|
-
* @param text - Task text
|
|
779
|
-
* @returns Priority level or undefined if no priority markers
|
|
780
|
-
*/
|
|
781
|
-
export function extractPriority(text: string): Priority | undefined {
|
|
782
|
-
if (PATTERNS.PRIORITY_URGENT.test(text)) return 'urgent';
|
|
783
|
-
if (PATTERNS.PRIORITY_HIGH.test(text)) return 'high';
|
|
784
|
-
if (PATTERNS.PRIORITY_NORMAL.test(text)) return 'normal';
|
|
785
|
-
return undefined;
|
|
786
|
-
}
|
|
787
|
-
|
|
788
|
-
/**
|
|
789
|
-
* Extract all tags from task text
|
|
790
|
-
*
|
|
791
|
-
* @param text - Task text
|
|
792
|
-
* @returns Array of tag names (without # symbol)
|
|
793
|
-
*
|
|
794
|
-
* @example
|
|
795
|
-
* extractTags("Review PR #backend #urgent") // => ["backend", "urgent"]
|
|
796
|
-
* extractTags("No tags here") // => []
|
|
797
|
-
*/
|
|
798
|
-
export function extractTags(text: string): string[] {
|
|
799
|
-
const matches = text.matchAll(PATTERNS.TAG);
|
|
800
|
-
return Array.from(matches, (match) => match[1]).filter(
|
|
801
|
-
(tag): tag is string => tag !== undefined,
|
|
802
|
-
);
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
/**
|
|
806
|
-
* Extract Todoist ID from task text
|
|
807
|
-
*
|
|
808
|
-
* @param text - Task text
|
|
809
|
-
* @returns Todoist ID string or undefined
|
|
810
|
-
*
|
|
811
|
-
* @example
|
|
812
|
-
* extractTodoistId("Task [todoist:123456]") // => "123456"
|
|
813
|
-
*/
|
|
814
|
-
export function extractTodoistId(text: string): string | undefined {
|
|
815
|
-
const match = text.match(PATTERNS.TODOIST_ID);
|
|
816
|
-
return match?.[1];
|
|
817
|
-
}
|
|
818
|
-
|
|
819
|
-
/**
|
|
820
|
-
* Extract completion date from task text
|
|
821
|
-
*
|
|
822
|
-
* @param text - Task text
|
|
823
|
-
* @returns Parsed Date or undefined
|
|
824
|
-
*
|
|
825
|
-
* @example
|
|
826
|
-
* extractCompletedDate("[completed: 2026-01-18]") // => Date(2026-01-18)
|
|
827
|
-
*/
|
|
828
|
-
export function extractCompletedDate(text: string): Date | undefined {
|
|
829
|
-
const match = text.match(PATTERNS.COMPLETED_DATE);
|
|
830
|
-
if (!match?.[1]) return undefined;
|
|
831
|
-
|
|
832
|
-
const date = parseAbsoluteDate(match[1]);
|
|
833
|
-
return <span class="branch-0 cbranch-no" title="branch not covered" >date ?? undefined;</span>
|
|
834
|
-
}
|
|
835
|
-
|
|
836
|
-
/**
|
|
837
|
-
* Extract due date from task text with context awareness
|
|
838
|
-
*
|
|
839
|
-
* Handles both absolute dates ([due: 2026-01-25]) and relative dates
|
|
840
|
-
* ([due: tomorrow]) which require context.
|
|
841
|
-
*
|
|
842
|
-
* @param text - Task text
|
|
843
|
-
* @param context - Parsing context (for relative dates)
|
|
844
|
-
* @returns Object with parsed date and optional warning
|
|
845
|
-
*/
|
|
846
|
-
export function extractDueDate(
|
|
847
|
-
text: string,
|
|
848
|
-
context: ParsingContext,
|
|
849
|
-
): { date: Date | undefined; warning?: Warning } {
|
|
850
|
-
// Try absolute date first
|
|
851
|
-
const absoluteMatch = text.match(PATTERNS.DUE_DATE_ABSOLUTE);
|
|
852
|
-
if (absoluteMatch?.[1]) {
|
|
853
|
-
const date = parseAbsoluteDate(absoluteMatch[1]);
|
|
854
|
-
return { date: <span class="branch-0 cbranch-no" title="branch not covered" >date ?? undefined }</span>;
|
|
855
|
-
}
|
|
856
|
-
|
|
857
|
-
// Try short format (M/D or M/D/YY)
|
|
858
|
-
const shortMatch = text.match(PATTERNS.DUE_DATE_SHORT);
|
|
859
|
-
if (shortMatch?.[1]) {
|
|
860
|
-
const date = parseAbsoluteDate(shortMatch[1]);
|
|
861
|
-
return { date: date ?? undefined };
|
|
862
|
-
}
|
|
863
|
-
|
|
864
|
-
// Try relative date
|
|
865
|
-
const relativeMatch = text.match(PATTERNS.DUE_DATE_RELATIVE);
|
|
866
|
-
if (relativeMatch?.[1]) {
|
|
867
|
-
if (!context.currentDate) {
|
|
868
|
-
// Relative date without context - create warning
|
|
869
|
-
return {
|
|
870
|
-
date: undefined,
|
|
871
|
-
warning: {
|
|
872
|
-
file: '', // Will be filled in by caller
|
|
873
|
-
line: 0, // Will be filled in by caller
|
|
874
|
-
text: text.trim(),
|
|
875
|
-
reason:
|
|
876
|
-
'Relative due date without context date from heading. Add a heading with a date above this task.',
|
|
877
|
-
},
|
|
878
|
-
};
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
const date = resolveRelativeDate(relativeMatch[1], context.currentDate);
|
|
882
|
-
return { date: <span class="branch-0 cbranch-no" title="branch not covered" >date ?? undefined }</span>;
|
|
883
|
-
}
|
|
884
|
-
|
|
885
|
-
return { date: undefined };
|
|
886
|
-
}
|
|
887
|
-
|
|
888
|
-
/**
|
|
889
|
-
* Clean task text by removing metadata markers
|
|
890
|
-
*
|
|
891
|
-
* Removes:
|
|
892
|
-
* - Assignees (@username)
|
|
893
|
-
* - Due dates ([due: ...])
|
|
894
|
-
* - Priority markers (!, !!, !!!)
|
|
895
|
-
* - Tags (#tag)
|
|
896
|
-
* - Todoist IDs ([todoist:...])
|
|
897
|
-
* - Completion dates ([completed:...])
|
|
898
|
-
*
|
|
899
|
-
* @param text - Raw task text
|
|
900
|
-
* @returns Cleaned text for display
|
|
901
|
-
*
|
|
902
|
-
* @example
|
|
903
|
-
* cleanTaskText("@nick Review PR !! #backend [due: 2026-01-25]")
|
|
904
|
-
* // => "Review PR"
|
|
905
|
-
*/
|
|
906
|
-
export function cleanTaskText(text: string): string {
|
|
907
|
-
return (
|
|
908
|
-
text
|
|
909
|
-
// Remove metadata in brackets
|
|
910
|
-
.replace(PATTERNS.DUE_DATE_ABSOLUTE, '')
|
|
911
|
-
.replace(PATTERNS.DUE_DATE_RELATIVE, '')
|
|
912
|
-
.replace(PATTERNS.DUE_DATE_SHORT, '')
|
|
913
|
-
.replace(PATTERNS.TODOIST_ID, '')
|
|
914
|
-
.replace(PATTERNS.COMPLETED_DATE, '')
|
|
915
|
-
// Remove assignee
|
|
916
|
-
.replace(PATTERNS.ASSIGNEE, '')
|
|
917
|
-
// Remove tags
|
|
918
|
-
.replace(PATTERNS.TAG, '')
|
|
919
|
-
// Remove priority markers
|
|
920
|
-
.replace(/!!!/g, '')
|
|
921
|
-
.replace(/!!/g, '')
|
|
922
|
-
.replace(/!/g, '')
|
|
923
|
-
// Clean up extra whitespace
|
|
924
|
-
.replace(/\s+/g, ' ')
|
|
925
|
-
.trim()
|
|
926
|
-
);
|
|
927
|
-
}
|
|
928
|
-
|
|
929
|
-
/**
|
|
930
|
-
* Parse a single line as a task
|
|
931
|
-
*
|
|
932
|
-
* This is the main parser entry point. It:
|
|
933
|
-
* 1. Checks if the line is a task
|
|
934
|
-
* 2. Extracts completion status
|
|
935
|
-
* 3. Parses all metadata (assignee, priority, dates, tags)
|
|
936
|
-
* 4. Cleans the text
|
|
937
|
-
* 5. Generates a stable ID
|
|
938
|
-
* 6. Applies context (project, person, heading date)
|
|
939
|
-
*
|
|
940
|
-
* @param line - Line of text to parse
|
|
941
|
-
* @param lineNumber - Line number in file (1-indexed)
|
|
942
|
-
* @param file - Relative file path
|
|
943
|
-
* @param context - Parsing context
|
|
944
|
-
* @returns Parsed Task object or null if line is not a task, plus any warnings
|
|
945
|
-
*/
|
|
946
|
-
export function parseTask(
|
|
947
|
-
line: string,
|
|
948
|
-
lineNumber: number,
|
|
949
|
-
file: string,
|
|
950
|
-
context: ParsingContext,
|
|
951
|
-
): { task: Task | null; warnings: Warning[] } {
|
|
952
|
-
const warnings: Warning[] = [];
|
|
953
|
-
|
|
954
|
-
// Detect malformed checkboxes and provide helpful warnings
|
|
955
|
-
// Check for asterisk/plus bullet markers (not supported)
|
|
956
|
-
if (/^\s*[*+]\s+\[[ xX]\]/.test(line)) {
|
|
957
|
-
warnings.push({
|
|
958
|
-
file,
|
|
959
|
-
line: lineNumber,
|
|
960
|
-
text: line.trim(),
|
|
961
|
-
reason:
|
|
962
|
-
'Unsupported bullet marker (* or +). Use dash (-) for task lists.',
|
|
963
|
-
});
|
|
964
|
-
return { task: null, warnings };
|
|
965
|
-
}
|
|
966
|
-
|
|
967
|
-
// Check for extra spaces inside checkbox: [x ] or [ x]
|
|
968
|
-
if (/^\s*-\s+\[[xX]\s+\]/.test(line) || /^\s*-\s+\[\s+[xX]\]/.test(line)) {
|
|
969
|
-
warnings.push({
|
|
970
|
-
file,
|
|
971
|
-
line: lineNumber,
|
|
972
|
-
text: line.trim(),
|
|
973
|
-
reason:
|
|
974
|
-
'Malformed checkbox with extra spaces. Use [x] or [ ] without extra spaces.',
|
|
975
|
-
});
|
|
976
|
-
return { task: null, warnings };
|
|
977
|
-
}
|
|
978
|
-
|
|
979
|
-
// Check for missing space after checkbox: [x]Task
|
|
980
|
-
if (/^\s*-\s+\[[ xX]\][^\s]/.test(line)) {
|
|
981
|
-
warnings.push({
|
|
982
|
-
file,
|
|
983
|
-
line: lineNumber,
|
|
984
|
-
text: line.trim(),
|
|
985
|
-
reason: 'Missing space after checkbox. Use "- [x] Task" format.',
|
|
986
|
-
});
|
|
987
|
-
return { task: null, warnings };
|
|
988
|
-
}
|
|
989
|
-
|
|
990
|
-
// Check for missing space before checkbox: -[x]
|
|
991
|
-
if (/^\s*-\[[ xX]\]/.test(line)) {
|
|
992
|
-
warnings.push({
|
|
993
|
-
file,
|
|
994
|
-
line: lineNumber,
|
|
995
|
-
text: line.trim(),
|
|
996
|
-
reason: 'Missing space before checkbox. Use "- [x] Task" format.',
|
|
997
|
-
});
|
|
998
|
-
return { task: null, warnings };
|
|
999
|
-
}
|
|
1000
|
-
|
|
1001
|
-
// Check if line is a task
|
|
1002
|
-
const taskMatch = line.match(PATTERNS.TASK_CHECKBOX);
|
|
1003
|
-
if (!taskMatch?.[0] || !taskMatch[2]) {
|
|
1004
|
-
return { task: null, warnings };
|
|
1005
|
-
}
|
|
1006
|
-
|
|
1007
|
-
// Extract completion status
|
|
1008
|
-
const completed = taskMatch[2].toLowerCase() === 'x';
|
|
1009
|
-
|
|
1010
|
-
// Extract text (everything after checkbox)
|
|
1011
|
-
const fullText = line.substring(taskMatch[0].length);
|
|
1012
|
-
|
|
1013
|
-
// Parse metadata from text
|
|
1014
|
-
const assignee = extractAssignee(fullText);
|
|
1015
|
-
const priority = extractPriority(fullText);
|
|
1016
|
-
const tags = extractTags(fullText);
|
|
1017
|
-
const todoistId = extractTodoistId(fullText);
|
|
1018
|
-
const completedDate = extractCompletedDate(fullText);
|
|
1019
|
-
|
|
1020
|
-
// Extract due date (may produce warning)
|
|
1021
|
-
const dueDateResult = extractDueDate(fullText, context);
|
|
1022
|
-
if (dueDateResult.warning) {
|
|
1023
|
-
warnings.push({
|
|
1024
|
-
...dueDateResult.warning,
|
|
1025
|
-
file,
|
|
1026
|
-
line: lineNumber,
|
|
1027
|
-
});
|
|
1028
|
-
}
|
|
1029
|
-
|
|
1030
|
-
// Warn about missing dates
|
|
1031
|
-
// Incomplete tasks without any date (no explicit due date and no context date)
|
|
1032
|
-
if (!completed && !dueDateResult.date && !context.currentDate) {
|
|
1033
|
-
warnings.push({
|
|
1034
|
-
file,
|
|
1035
|
-
line: lineNumber,
|
|
1036
|
-
text: fullText.trim(),
|
|
1037
|
-
reason:
|
|
1038
|
-
'Task has no due date. Add [due: YYYY-MM-DD] or place under a heading with a date.',
|
|
1039
|
-
});
|
|
1040
|
-
}
|
|
1041
|
-
|
|
1042
|
-
// Completed tasks should have completion dates
|
|
1043
|
-
if (completed && !completedDate) {
|
|
1044
|
-
warnings.push({
|
|
1045
|
-
file,
|
|
1046
|
-
line: lineNumber,
|
|
1047
|
-
text: fullText.trim(),
|
|
1048
|
-
reason:
|
|
1049
|
-
'Completed task missing completion date. Add [completed: YYYY-MM-DD].',
|
|
1050
|
-
});
|
|
1051
|
-
}
|
|
1052
|
-
|
|
1053
|
-
// Clean text (remove metadata markers)
|
|
1054
|
-
const cleanText = cleanTaskText(fullText);
|
|
1055
|
-
|
|
1056
|
-
// Generate stable ID
|
|
1057
|
-
const id = generateTaskId(file, lineNumber, cleanText);
|
|
1058
|
-
|
|
1059
|
-
// Build task object with only defined properties
|
|
1060
|
-
const task: Task = {
|
|
1061
|
-
id,
|
|
1062
|
-
text: cleanText,
|
|
1063
|
-
completed,
|
|
1064
|
-
file,
|
|
1065
|
-
line: lineNumber,
|
|
1066
|
-
tags,
|
|
1067
|
-
};
|
|
1068
|
-
|
|
1069
|
-
// Add optional fields only if defined
|
|
1070
|
-
if (assignee !== undefined) task.assignee = assignee;
|
|
1071
|
-
if (priority !== undefined) task.priority = priority;
|
|
1072
|
-
if (dueDateResult.date !== undefined) task.dueDate = dueDateResult.date;
|
|
1073
|
-
if (todoistId !== undefined) task.todoistId = todoistId;
|
|
1074
|
-
if (completedDate !== undefined) task.completedDate = completedDate;
|
|
1075
|
-
if (context.project !== undefined) task.project = context.project;
|
|
1076
|
-
if (context.person !== undefined) task.person = context.person;
|
|
1077
|
-
if (context.currentDate !== undefined) task.contextDate = context.currentDate;
|
|
1078
|
-
if (context.currentHeading !== undefined)
|
|
1079
|
-
task.contextHeading = context.currentHeading;
|
|
1080
|
-
|
|
1081
|
-
return { task, warnings };
|
|
1082
|
-
}
|
|
1083
|
-
</pre></td></tr></table></pre>
|
|
1084
|
-
|
|
1085
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1086
|
-
</div><!-- /wrapper -->
|
|
1087
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1088
|
-
Code coverage generated by
|
|
1089
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1090
|
-
at 2026-01-26T03:50:53.066Z
|
|
1091
|
-
</div>
|
|
1092
|
-
<script src="../../prettify.js"></script>
|
|
1093
|
-
<script>
|
|
1094
|
-
window.onload = function () {
|
|
1095
|
-
prettyPrint();
|
|
1096
|
-
};
|
|
1097
|
-
</script>
|
|
1098
|
-
<script src="../../sorter.js"></script>
|
|
1099
|
-
<script src="../../block-navigation.js"></script>
|
|
1100
|
-
</body>
|
|
1101
|
-
</html>
|
|
1102
|
-
|