uniorg-parse 0.4.5 → 0.5.0
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/lib/entities.js +1 -5
- package/lib/entities.js.map +1 -1
- package/lib/index.d.ts +1 -2
- package/lib/index.js +1 -6
- package/lib/index.js.map +1 -1
- package/lib/parse-options.js +1 -4
- package/lib/parse-options.js.map +1 -1
- package/lib/parser.d.ts +1 -1
- package/lib/parser.js +110 -114
- package/lib/parser.js.map +1 -1
- package/lib/reader.js +50 -59
- package/lib/reader.js.map +1 -1
- package/lib/unified-org-parse.js +4 -6
- package/lib/unified-org-parse.js.map +1 -1
- package/lib/utils.d.ts +1 -1
- package/lib/utils.js +6 -13
- package/lib/utils.js.map +1 -1
- package/package.json +14 -11
- package/lib/parser.spec.d.ts +0 -1
- package/lib/parser.spec.js +0 -507
- package/lib/parser.spec.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uniorg-parse",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"description": "uniorg plugin to parse org-mode",
|
|
5
6
|
"keywords": [
|
|
6
7
|
"uniorg",
|
|
@@ -36,17 +37,19 @@
|
|
|
36
37
|
"url": "https://github.com/rasendubi/uniorg/issues"
|
|
37
38
|
},
|
|
38
39
|
"devDependencies": {
|
|
39
|
-
"@types/jest": "
|
|
40
|
-
"@types/unist": "
|
|
41
|
-
"jest": "
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
40
|
+
"@types/jest": "27.4.1",
|
|
41
|
+
"@types/unist": "2.0.6",
|
|
42
|
+
"jest": "27.5.1",
|
|
43
|
+
"ts-jest": "^27.1.4",
|
|
44
|
+
"typescript": "4.6.3",
|
|
45
|
+
"unified": "^10.1.2",
|
|
46
|
+
"uniorg": "^0.5.0",
|
|
47
|
+
"yaml": "^2.0.0"
|
|
45
48
|
},
|
|
46
49
|
"dependencies": {
|
|
47
|
-
"unist-builder": "
|
|
48
|
-
"vfile": "
|
|
49
|
-
"vfile-location": "
|
|
50
|
+
"unist-builder": "3.0.0",
|
|
51
|
+
"vfile": "5.3.2",
|
|
52
|
+
"vfile-location": "4.0.1"
|
|
50
53
|
},
|
|
51
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "e77afd8255895985eaa8b0cf15de8edab81a89b6"
|
|
52
55
|
}
|
package/lib/parser.spec.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/parser.spec.js
DELETED
|
@@ -1,507 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const yaml_1 = __importDefault(require("yaml"));
|
|
7
|
-
const util_1 = require("yaml/util");
|
|
8
|
-
const parser_1 = require("./parser");
|
|
9
|
-
yaml_1.default.scalarOptions.str.defaultType = util_1.Type.QUOTE_DOUBLE;
|
|
10
|
-
yaml_1.default.scalarOptions.str.defaultKeyType = util_1.Type.PLAIN;
|
|
11
|
-
expect.addSnapshotSerializer({
|
|
12
|
-
test(value) {
|
|
13
|
-
try {
|
|
14
|
-
yaml_1.default.stringify(value);
|
|
15
|
-
return true;
|
|
16
|
-
}
|
|
17
|
-
catch (e) {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
print(value) {
|
|
22
|
-
return yaml_1.default.stringify(value).trimEnd();
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
const itParses = (name, input, options) => {
|
|
26
|
-
it(name, () => {
|
|
27
|
-
const result = parser_1.parse(input, options);
|
|
28
|
-
expect(result).toMatchSnapshot();
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
itParses.only = (name, input) => {
|
|
32
|
-
it.only(name, () => {
|
|
33
|
-
const result = parser_1.parse(input);
|
|
34
|
-
expect(result).toMatchSnapshot();
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
itParses.skip = (name, input) => {
|
|
38
|
-
it.skip(name, () => {
|
|
39
|
-
const result = parser_1.parse(input);
|
|
40
|
-
expect(result).toMatchSnapshot();
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
itParses.todo = (name, _input) => {
|
|
44
|
-
it.todo(name);
|
|
45
|
-
};
|
|
46
|
-
describe('org/parser', () => {
|
|
47
|
-
itParses('empty document', '');
|
|
48
|
-
describe('headline', () => {
|
|
49
|
-
itParses('single headline', '* Hello');
|
|
50
|
-
itParses('multiple headlines', `* Hello
|
|
51
|
-
* World
|
|
52
|
-
* blah`);
|
|
53
|
-
itParses('nested headlines', `* hi
|
|
54
|
-
** there
|
|
55
|
-
*** how
|
|
56
|
-
* are
|
|
57
|
-
*** you
|
|
58
|
-
`);
|
|
59
|
-
itParses('complex headline', `* TODO [#A] COMMENT headline /italic/ title :some:tags:`);
|
|
60
|
-
itParses('complex headline + newline', `* TODO [#A] COMMENT headline /italic/ title :some:tags:
|
|
61
|
-
`);
|
|
62
|
-
itParses('custom todo keywords', '* NEXT my custom todo keyword', {
|
|
63
|
-
todoKeywords: ['TODO', 'NEXT', 'DONE'],
|
|
64
|
-
});
|
|
65
|
-
itParses('DONE from next line should not capture first headline', `* Headline 1
|
|
66
|
-
|
|
67
|
-
* DONE Headline 2`);
|
|
68
|
-
});
|
|
69
|
-
describe('section', () => {
|
|
70
|
-
itParses('initial section', `hello
|
|
71
|
-
* hi`);
|
|
72
|
-
itParses('single-line section', `hi`);
|
|
73
|
-
itParses('empty lines before first section', `
|
|
74
|
-
|
|
75
|
-
hi`);
|
|
76
|
-
itParses('section in headline', `* hello
|
|
77
|
-
this is section`);
|
|
78
|
-
itParses('first top-level headline after list', `- list
|
|
79
|
-
* headline`);
|
|
80
|
-
});
|
|
81
|
-
itParses('paragraph split by empty line', `a1
|
|
82
|
-
a2
|
|
83
|
-
|
|
84
|
-
b`);
|
|
85
|
-
itParses('keyword', `#+title: hi`);
|
|
86
|
-
itParses('fake keyword', `#+ title: hi`);
|
|
87
|
-
itParses('non-dual keyword inside paragraph', `hello
|
|
88
|
-
#+BLAH[hi]: heh
|
|
89
|
-
hi
|
|
90
|
-
`);
|
|
91
|
-
itParses('dual keyword inside paragraph', `hello
|
|
92
|
-
#+RESULTS[hi]: hello
|
|
93
|
-
there
|
|
94
|
-
`);
|
|
95
|
-
describe('planning', () => {
|
|
96
|
-
itParses('normal planning', `* headline
|
|
97
|
-
CLOSED: [2019-03-13 Wed 23:48] SCHEDULED: [2019-03-13 Wed] DEADLINE: [2019-03-14 Thu]`);
|
|
98
|
-
itParses('fake planning', `* headline
|
|
99
|
-
CLOSED:`);
|
|
100
|
-
itParses('mixed good and fake planning', `* headline
|
|
101
|
-
CLOSED: SCHEDULED: [2021-05-31 Mon]
|
|
102
|
-
`);
|
|
103
|
-
itParses('paragraph after planning', `* headline
|
|
104
|
-
CLOSED: [2021-05-31 Mon]
|
|
105
|
-
this is paragraph`);
|
|
106
|
-
itParses('planning before property drawer', `* headline
|
|
107
|
-
CLOSED: [2021-05-31 Mon]
|
|
108
|
-
:PROPERTIES:
|
|
109
|
-
:END:
|
|
110
|
-
this is paragraph`);
|
|
111
|
-
itParses('fake planning after property drawer', `* headline
|
|
112
|
-
:PROPERTIES:
|
|
113
|
-
:END:
|
|
114
|
-
CLOSED: [2021-05-31 Mon]
|
|
115
|
-
this is paragraph`);
|
|
116
|
-
itParses('fake planning over multiple lines', `* headline
|
|
117
|
-
CLOSED: [2021-05-31 Mon]
|
|
118
|
-
SCHEDULED: [2021-05-31 Mon]
|
|
119
|
-
this is paragraph`);
|
|
120
|
-
});
|
|
121
|
-
itParses('property drawer', `* headline
|
|
122
|
-
:PROPERTIES:
|
|
123
|
-
:CREATED: [2019-03-13 Wed 23:57]
|
|
124
|
-
:END:`);
|
|
125
|
-
itParses('lowercase property drawer', `* headline
|
|
126
|
-
:properties:
|
|
127
|
-
:created: [2019-03-13 Wed 23:57]
|
|
128
|
-
:end:`);
|
|
129
|
-
itParses('property drawer + section', `* headline
|
|
130
|
-
:PROPERTIES:
|
|
131
|
-
:CREATED: [2019-03-13 Wed 23:57]
|
|
132
|
-
:END:
|
|
133
|
-
hello`);
|
|
134
|
-
itParses('file property drawer', `:PROPERTIES:
|
|
135
|
-
:ID: 01c7615e-d792-4d06-995b-19a2c046c055
|
|
136
|
-
:END:`);
|
|
137
|
-
itParses('custom drawer', `:MYDRAWER:
|
|
138
|
-
hello /there/
|
|
139
|
-
:END:`);
|
|
140
|
-
itParses('lowercase custom drawer', `:mydrawer:
|
|
141
|
-
hello /there/
|
|
142
|
-
:end:`);
|
|
143
|
-
itParses('incomplete drawer after paragraph', `
|
|
144
|
-
hello
|
|
145
|
-
:NONDRAWER:
|
|
146
|
-
hello`);
|
|
147
|
-
itParses('complete drawer after paragraph', `
|
|
148
|
-
hello
|
|
149
|
-
:DRAWER:
|
|
150
|
-
hello
|
|
151
|
-
:END:`);
|
|
152
|
-
itParses('complete lowercase drawer after paragraph', `
|
|
153
|
-
hello
|
|
154
|
-
:drawer:
|
|
155
|
-
hello
|
|
156
|
-
:end:`);
|
|
157
|
-
itParses('incomplete drawer', `:NONDRAWER:
|
|
158
|
-
I have no :END:`);
|
|
159
|
-
describe('timestamps', () => {
|
|
160
|
-
itParses('inactive', `[2021-01-07 Thu]`);
|
|
161
|
-
itParses('inactive-range', `[2021-01-07 Thu]--[2021-01-08 Fri]`);
|
|
162
|
-
itParses('active', `<2021-01-07 Thu>`);
|
|
163
|
-
itParses('active-range', `<2021-01-07 Thu>--<2021-01-09 Sat>`);
|
|
164
|
-
itParses('with time', `[2021-01-07 Thu 19:36]`);
|
|
165
|
-
itParses('time range', `[2021-01-07 Thu 19:36-20:38]`);
|
|
166
|
-
});
|
|
167
|
-
describe('list', () => {
|
|
168
|
-
itParses('single-item list', `- hi`);
|
|
169
|
-
itParses('two-item list', `- hi
|
|
170
|
-
- there`);
|
|
171
|
-
itParses('ordered list', `1. one
|
|
172
|
-
2. two`);
|
|
173
|
-
itParses('nested lists', `- there
|
|
174
|
-
- nested
|
|
175
|
-
- list`);
|
|
176
|
-
itParses('description list', `- term1 :: description 1
|
|
177
|
-
- term 2 :: description 2`);
|
|
178
|
-
itParses('description list > skips trailing spaces after tag', `- term :: description`);
|
|
179
|
-
// See https://github.com/rasendubi/uniorg/issues/15
|
|
180
|
-
itParses('formatting in description list tags', `
|
|
181
|
-
- [[https://example.com][Example]] :: Hello there!
|
|
182
|
-
- [[https://github.com][GitHub]] :: This is GitHub, your hub for Git repos.
|
|
183
|
-
- *Gitlab* :: Alternative to GitHub
|
|
184
|
-
- /Sourcehut/ :: Another alternative to GitHub that primarily uses email-based workflows.
|
|
185
|
-
- /Codeberg/ :: *ANOTHER ALTERNATIVE*
|
|
186
|
-
- /*self-hosting Git server*/ :: /*The ultimate Git solution for privacy-oriented individuals!*/
|
|
187
|
-
`);
|
|
188
|
-
itParses('list after paragraph', `hello
|
|
189
|
-
- list`);
|
|
190
|
-
itParses('two empty lines breaking list', `- list1
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
- list 2`);
|
|
194
|
-
itParses('empty line between list items', `- item 1
|
|
195
|
-
|
|
196
|
-
- item 2`);
|
|
197
|
-
itParses('fake list numbers', `- 1. blah`);
|
|
198
|
-
itParses('checkbox item [ ]', `- [ ] not done`);
|
|
199
|
-
itParses('checkbox item [-]', `- [-] half-done`);
|
|
200
|
-
itParses('checkbox item [x]', `- [x] done`);
|
|
201
|
-
itParses('checkbox item [X]', `- [X] done`);
|
|
202
|
-
// two empty lines finish lists but not if inside a block
|
|
203
|
-
itParses('long blocks in lists', `
|
|
204
|
-
- list
|
|
205
|
-
#+begin_src c
|
|
206
|
-
x
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
y
|
|
210
|
-
#+end_src
|
|
211
|
-
`);
|
|
212
|
-
// two empty lines finish lists but not if inside a drawer
|
|
213
|
-
itParses('long drawer in list', `
|
|
214
|
-
- list
|
|
215
|
-
:DRAWER:
|
|
216
|
-
x
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
y
|
|
220
|
-
:END:
|
|
221
|
-
`);
|
|
222
|
-
itParses('list inside quite inside list', `
|
|
223
|
-
- list 1
|
|
224
|
-
#+begin_quote
|
|
225
|
-
- list 2
|
|
226
|
-
#+end_quote`);
|
|
227
|
-
});
|
|
228
|
-
describe('links', () => {
|
|
229
|
-
itParses('link', `http://example.com`);
|
|
230
|
-
itParses('plain link does not include trailing punctuation', `Example: http://example.com.`);
|
|
231
|
-
itParses('link mixed with text', `hello http://example.com blah`);
|
|
232
|
-
itParses('regular link', `[[link][text]]`);
|
|
233
|
-
itParses('regular link with longer link slash', `[[longlink][text]]`);
|
|
234
|
-
itParses('two links in one line', `[[link1][text1]] [[link2][text2]] `);
|
|
235
|
-
itParses('link after text', `some text [[link][text]]`);
|
|
236
|
-
itParses('link with no text', `[[link]]`);
|
|
237
|
-
itParses('./ as start of file link', `[[./file.org]]`);
|
|
238
|
-
itParses('file link with spaces', `[[./file with spaces.org]]`);
|
|
239
|
-
// note that these are actual percents in the file name, not a url-encoded "file with spaces.org"
|
|
240
|
-
itParses('file link with percents', `[[./file%2Bwith%2Bspaces.org]]`);
|
|
241
|
-
itParses('angle link', `<http://example.com>`);
|
|
242
|
-
itParses('https link', `[[https://example.com/hello]]`);
|
|
243
|
-
itParses('multiline description', `[[www.something.com][line1
|
|
244
|
-
line2]]`);
|
|
245
|
-
});
|
|
246
|
-
describe('blocks', () => {
|
|
247
|
-
itParses('src block', `#+begin_src
|
|
248
|
-
hello
|
|
249
|
-
#+end_src`);
|
|
250
|
-
itParses('escaper in src block', `#+begin_src c
|
|
251
|
-
,*a = 0;
|
|
252
|
-
#+end_src`);
|
|
253
|
-
itParses('headline escaper in src block', `#+begin_src org
|
|
254
|
-
,* not a headline;
|
|
255
|
-
#+end_src`);
|
|
256
|
-
itParses('comma escaper in src block', `#+begin_src org
|
|
257
|
-
,,,* two commas escaped
|
|
258
|
-
#+end_src`);
|
|
259
|
-
itParses('#+ escaper in src block', `#+begin_src org
|
|
260
|
-
,#+ escaped
|
|
261
|
-
#+end_src`);
|
|
262
|
-
itParses('fake escaper', `#+begin_src org
|
|
263
|
-
,# nont escaped
|
|
264
|
-
#+end_src`);
|
|
265
|
-
itParses('src in list', `
|
|
266
|
-
- example:
|
|
267
|
-
#+begin_src
|
|
268
|
-
blah
|
|
269
|
-
#+end_src`);
|
|
270
|
-
itParses('quote block', `#+begin_quote
|
|
271
|
-
hello
|
|
272
|
-
#+end_quote`);
|
|
273
|
-
itParses('verse block', `#+BEGIN_VERSE
|
|
274
|
-
Great clouds overhead
|
|
275
|
-
Tiny black birds rise and fall
|
|
276
|
-
Snow covers Emacs
|
|
277
|
-
|
|
278
|
-
---AlexSchroeder
|
|
279
|
-
#+END_VERSE`);
|
|
280
|
-
itParses('center block', `#+begin_center
|
|
281
|
-
hello
|
|
282
|
-
#+end_center`);
|
|
283
|
-
itParses('comment block', `#+begin_comment
|
|
284
|
-
hello
|
|
285
|
-
#+end_comment`);
|
|
286
|
-
itParses('example block', `#+begin_example
|
|
287
|
-
hi
|
|
288
|
-
#+end_example`);
|
|
289
|
-
itParses('export block', `#+begin_export
|
|
290
|
-
hi
|
|
291
|
-
#+end_export`);
|
|
292
|
-
itParses('export block with backend', `#+begin_export html
|
|
293
|
-
hi
|
|
294
|
-
#+end_export`);
|
|
295
|
-
itParses('special block', `#+begin_blah
|
|
296
|
-
hello
|
|
297
|
-
#+end_blah`);
|
|
298
|
-
itParses('incomplete block after paragraph', `hello
|
|
299
|
-
#+begin_src
|
|
300
|
-
not a code`);
|
|
301
|
-
itParses('fake block', `#+nonblock
|
|
302
|
-
#+begin_block
|
|
303
|
-
hello
|
|
304
|
-
#+end_block`);
|
|
305
|
-
itParses('fake block 2', `#+ begin_src
|
|
306
|
-
not a block
|
|
307
|
-
#+end_src`);
|
|
308
|
-
});
|
|
309
|
-
describe('emphasis marks', () => {
|
|
310
|
-
itParses('bold', `*hello*`);
|
|
311
|
-
itParses('emphasis', `/Consider/ ~t*h*e~ *following* =example= +strike+`);
|
|
312
|
-
itParses('C++ accidental strike-through', `C++ blah C++`);
|
|
313
|
-
itParses('emphasis boundaries', `a/a/ b*b* c~c~ d=d= e+e+ f_f_`);
|
|
314
|
-
itParses('hanging /', `- hello/other`);
|
|
315
|
-
});
|
|
316
|
-
describe('superscript', () => {
|
|
317
|
-
itParses('simple', `hello^world`);
|
|
318
|
-
itParses('braces', `H^{+}`);
|
|
319
|
-
itParses('nested braces', `H^{{x}}`);
|
|
320
|
-
itParses('nested braces, 3 levels', `H^{hello{hi{there}}}`);
|
|
321
|
-
itParses('spaces in braces', `H^{hello world}`);
|
|
322
|
-
itParses('multiple nesting groups', `H^{hello{there}and{there}}`);
|
|
323
|
-
describe('no superscript', () => {
|
|
324
|
-
itParses('begginning of line', `^hello`);
|
|
325
|
-
itParses('pre whitespace', `hello ^there`);
|
|
326
|
-
itParses('post whitespace', `hello^ there`);
|
|
327
|
-
itParses('unbalanced braces', `H^{{+}`);
|
|
328
|
-
// replicating emacs +bugs+ limitations
|
|
329
|
-
itParses('too many nested braces', `H^{hello{hi{there{hello?}}}}`);
|
|
330
|
-
itParses('multiple 2-level nesting groups', `H^{hello{there{}}and{there}}`);
|
|
331
|
-
});
|
|
332
|
-
});
|
|
333
|
-
describe('subscript', () => {
|
|
334
|
-
itParses('simple', `hello_world`);
|
|
335
|
-
itParses('braces', `H_{+}`);
|
|
336
|
-
itParses('nested braces', `H_{{x}}`);
|
|
337
|
-
itParses('nested braces, 3 levels', `H_{hello{hi{there}}}`);
|
|
338
|
-
itParses('spaces in braces', `H_{hello world}`);
|
|
339
|
-
itParses('multiple nesting groups', `H_{hello{there}and{there}}`);
|
|
340
|
-
itParses('after superscript', `H^12_22`);
|
|
341
|
-
itParses('after subscript', `H_12_22`);
|
|
342
|
-
itParses('trailing _', `f_f_`);
|
|
343
|
-
describe('no superscript', () => {
|
|
344
|
-
itParses('begginning of line', `_hello`);
|
|
345
|
-
itParses('pre whitespace', `hello _there`);
|
|
346
|
-
itParses('post whitespace', `hello_ there`);
|
|
347
|
-
itParses('unbalanced braces', `H_{{+}`);
|
|
348
|
-
// replicating emacs +bugs+ limitations
|
|
349
|
-
itParses('too many nested braces', `H_{hello{hi{there{hello?}}}}`);
|
|
350
|
-
itParses('multiple 2-level nesting groups', `H_{hello{there{}}and{there}}`);
|
|
351
|
-
});
|
|
352
|
-
});
|
|
353
|
-
itParses('table', `
|
|
354
|
-
| head1 | head2 |
|
|
355
|
-
|--------+-------|
|
|
356
|
-
| value1 | value2 |
|
|
357
|
-
`);
|
|
358
|
-
itParses('table.el table', `
|
|
359
|
-
+--------+--------+
|
|
360
|
-
| head1 | head2 |
|
|
361
|
-
+--------+--------+
|
|
362
|
-
| value1 | value2 |
|
|
363
|
-
+--------+--------+`);
|
|
364
|
-
itParses('table with format', `
|
|
365
|
-
| 1 |
|
|
366
|
-
| 2 |
|
|
367
|
-
#+TBLFM: $2=$1^2::$3=$1^3
|
|
368
|
-
`);
|
|
369
|
-
describe('comments', () => {
|
|
370
|
-
itParses('empty comment', `#`);
|
|
371
|
-
itParses('single-line comment', `# this is comment`);
|
|
372
|
-
itParses('multi-line comment', `# first line
|
|
373
|
-
# second
|
|
374
|
-
# third
|
|
375
|
-
# fourth`);
|
|
376
|
-
itParses('no comments in list', `
|
|
377
|
-
- # not a comment
|
|
378
|
-
# comment`);
|
|
379
|
-
itParses('does not eat keyword', `# this is comment
|
|
380
|
-
#+title: hello`);
|
|
381
|
-
});
|
|
382
|
-
describe('fixed-width', () => {
|
|
383
|
-
itParses('empty fixed-width', `:`);
|
|
384
|
-
itParses('single-line fixed-width', `: hello`);
|
|
385
|
-
itParses('multi-line fixed-width', `: hello
|
|
386
|
-
: world`);
|
|
387
|
-
});
|
|
388
|
-
describe('clock', () => {
|
|
389
|
-
itParses('clock in progress', `CLOCK: [2021-01-10 Sun 14:36]`);
|
|
390
|
-
itParses('finished clock', `CLOCK: [2020-12-22 Tue 09:07]--[2020-12-22 Tue 11:10] => 2:03`);
|
|
391
|
-
});
|
|
392
|
-
describe('latex environment', () => {
|
|
393
|
-
itParses('multi-line', `\\begin{hello}
|
|
394
|
-
some text
|
|
395
|
-
\\end{hello}`);
|
|
396
|
-
itParses('latex environment after paragraph', `hello
|
|
397
|
-
\\begin{hello} there \\end{hello}`);
|
|
398
|
-
itParses('incomplete latex environment after paragraph', `hello
|
|
399
|
-
\\begin{hello}
|
|
400
|
-
I am incomplete`);
|
|
401
|
-
itParses('incomplete latex environment after paragraph (two lines)', `hello
|
|
402
|
-
there
|
|
403
|
-
\\begin{hello}
|
|
404
|
-
I am incomplete`);
|
|
405
|
-
itParses('environment with star', `
|
|
406
|
-
\\begin{equation*}
|
|
407
|
-
blah
|
|
408
|
-
\\end{equation*}
|
|
409
|
-
`);
|
|
410
|
-
});
|
|
411
|
-
describe('affiliated keyword', () => {
|
|
412
|
-
itParses('name', `#+NAME: source
|
|
413
|
-
#+begin_src org
|
|
414
|
-
some paragraph
|
|
415
|
-
#+end_src`);
|
|
416
|
-
itParses('parsed keywords', `#+CAPTION: hello *world*
|
|
417
|
-
paragraph`);
|
|
418
|
-
itParses('multiple keywords', `#+NAME: name
|
|
419
|
-
#+CAPTION: hi
|
|
420
|
-
paragraph`);
|
|
421
|
-
itParses('multiple same keywords', `
|
|
422
|
-
#+NAME: name1
|
|
423
|
-
#+NAME: name2
|
|
424
|
-
#+CAPTION: caption1
|
|
425
|
-
#+CAPTION: caption2
|
|
426
|
-
paragraph`);
|
|
427
|
-
itParses('keyword renaming', `#+srcname: hi
|
|
428
|
-
#+begin_src
|
|
429
|
-
#+end_src
|
|
430
|
-
`);
|
|
431
|
-
itParses('dual keywords', `
|
|
432
|
-
#+RESULTS[A]:
|
|
433
|
-
: Hello, world!`);
|
|
434
|
-
});
|
|
435
|
-
itParses('horizontal rule', `-----`);
|
|
436
|
-
itParses('horizontal rule between paragraphs (#11)', `Hello
|
|
437
|
-
|
|
438
|
-
-----
|
|
439
|
-
|
|
440
|
-
World`);
|
|
441
|
-
describe('footnote definition', () => {
|
|
442
|
-
itParses('simple', `
|
|
443
|
-
[fn:hello] this is footnote definition
|
|
444
|
-
`);
|
|
445
|
-
itParses('paragraph split', `
|
|
446
|
-
[fn:hello] hello
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
next paragraph`);
|
|
450
|
-
itParses('starting on next line', `
|
|
451
|
-
[fn:hello]
|
|
452
|
-
footnote
|
|
453
|
-
`);
|
|
454
|
-
itParses('sequential', `
|
|
455
|
-
[fn:hello] footnote1
|
|
456
|
-
[fn:2] footnote2
|
|
457
|
-
`);
|
|
458
|
-
itParses('sequential with affiliated keywords', `
|
|
459
|
-
#+NAME: f1
|
|
460
|
-
[fn:hello] footnote1
|
|
461
|
-
#+NAME: f2
|
|
462
|
-
[fn:2] footnote2
|
|
463
|
-
`);
|
|
464
|
-
itParses('footnote definition splits paragraph', `hello
|
|
465
|
-
[fn:1] hello`);
|
|
466
|
-
// note that footnote content is ": footnote", not "footnote".
|
|
467
|
-
itParses('footnote definition with : following', `[fn:1]: footnote`);
|
|
468
|
-
});
|
|
469
|
-
itParses('diary sexp', `%%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old)`);
|
|
470
|
-
itParses('diary sexp with newline following', `%%(diary-anniversaries)\n`);
|
|
471
|
-
itParses('non-closing diary sexp', `%%(I am still a diary-sexp`);
|
|
472
|
-
describe('footnote-reference', () => {
|
|
473
|
-
itParses('standard reference', `hello[fn:1]`);
|
|
474
|
-
itParses('inline reference', `hello[fn:: this is inline /footnote/ definition]`);
|
|
475
|
-
itParses('named inline reference', `hello[fn:name: this is inline /footnote/ definition]`);
|
|
476
|
-
});
|
|
477
|
-
itParses('latex-fragment', `If $a^2=b$ and \\( b=2 \\), then the solution must be
|
|
478
|
-
either $$ a=+\\sqrt{2} $$ or \\[ a=-\\sqrt{2} \\].`);
|
|
479
|
-
itParses('multiline latex fragment', `$$2+
|
|
480
|
-
2$$`);
|
|
481
|
-
itParses('multiline latex fragment (3 lines)', `$$2
|
|
482
|
-
2
|
|
483
|
-
2$$`);
|
|
484
|
-
itParses('multiline latex fragment (4 lines)', `$$2
|
|
485
|
-
2
|
|
486
|
-
2
|
|
487
|
-
2$$`);
|
|
488
|
-
itParses('multiline single-$ fragment', `hello $2
|
|
489
|
-
2
|
|
490
|
-
2
|
|
491
|
-
2$ world`);
|
|
492
|
-
itParses('multiline \\[ \\] fragment', `\\[2
|
|
493
|
-
2
|
|
494
|
-
2
|
|
495
|
-
2\\]`);
|
|
496
|
-
itParses('multiline \\( \\) fragment', `\\(2
|
|
497
|
-
2
|
|
498
|
-
2
|
|
499
|
-
2\\)`);
|
|
500
|
-
itParses('fake multiline fragment', `hello $2
|
|
501
|
-
2
|
|
502
|
-
2
|
|
503
|
-
2 world`);
|
|
504
|
-
itParses('entity', `\\Agrave`);
|
|
505
|
-
itParses('entity in parentheses', `(\\leq)`);
|
|
506
|
-
});
|
|
507
|
-
//# sourceMappingURL=parser.spec.js.map
|
package/lib/parser.spec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.spec.js","sourceRoot":"","sources":["../src/parser.spec.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,oCAAiC;AAEjC,qCAAiC;AAGjC,cAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,GAAG,WAAI,CAAC,YAAY,CAAC;AACvD,cAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,GAAG,WAAI,CAAC,KAAK,CAAC;AAEnD,MAAM,CAAC,qBAAqB,CAAC;IAC3B,IAAI,CAAC,KAAK;QACR,IAAI;YACF,cAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IACD,KAAK,CAAC,KAAK;QACT,OAAO,cAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,CACf,IAAY,EACZ,KAAa,EACb,OAA+B,EAC/B,EAAE;IACF,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE;QACZ,MAAM,MAAM,GAAG,cAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AACF,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;IAC9C,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;QACjB,MAAM,MAAM,GAAG,cAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AACF,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;IAC9C,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;QACjB,MAAM,MAAM,GAAG,cAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AACF,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,EAAE;IAChD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAE/B,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QAEvC,QAAQ,CACN,oBAAoB,EACpB;;OAEC,CACF,CAAC;QAEF,QAAQ,CACN,kBAAkB,EAClB;;;;;CAKL,CACI,CAAC;QAEF,QAAQ,CACN,kBAAkB,EAClB,yDAAyD,CAC1D,CAAC;QAEF,QAAQ,CACN,4BAA4B,EAC5B;CACL,CACI,CAAC;QAEF,QAAQ,CAAC,sBAAsB,EAAE,+BAA+B,EAAE;YAChE,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SACvC,CAAC,CAAC;QAEH,QAAQ,CACN,uDAAuD,EACvD;;kBAEY,CACb,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,QAAQ,CACN,iBAAiB,EACjB;KACD,CACA,CAAC;QAEF,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QAEtC,QAAQ,CACN,kCAAkC,EAClC;;GAEH,CACE,CAAC;QAEF,QAAQ,CACN,qBAAqB,EACrB;gBACU,CACX,CAAC;QAEF,QAAQ,CACN,qCAAqC,EACrC;WACK,CACN,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CACN,+BAA+B,EAC/B;;;EAGF,CACC,CAAC;IAEF,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAEnC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAEzC,QAAQ,CACN,mCAAmC,EACnC;;;CAGH,CACE,CAAC;IACF,QAAQ,CACN,+BAA+B,EAC/B;;;CAGH,CACE,CAAC;IAEF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,QAAQ,CACN,iBAAiB,EACjB;sFACgF,CACjF,CAAC;QAEF,QAAQ,CACN,eAAe,EACf;QACE,CACH,CAAC;QAEF,QAAQ,CACN,8BAA8B,EAC9B;;CAEL,CACI,CAAC;QAEF,QAAQ,CACN,0BAA0B,EAC1B;;kBAEY,CACb,CAAC;QAEF,QAAQ,CACN,iCAAiC,EACjC;;;;kBAIY,CACb,CAAC;QAEF,QAAQ,CACN,qCAAqC,EACrC;;;;kBAIY,CACb,CAAC;QAEF,QAAQ,CACN,mCAAmC,EACnC;;;kBAGY,CACb,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CACN,iBAAiB,EACjB;;;MAGE,CACH,CAAC;IACF,QAAQ,CACN,2BAA2B,EAC3B;;;MAGE,CACH,CAAC;IACF,QAAQ,CACN,2BAA2B,EAC3B;;;;MAIE,CACH,CAAC;IAEF,QAAQ,CACN,sBAAsB,EACtB;;MAEE,CACH,CAAC;IAEF,QAAQ,CACN,eAAe,EACf;;MAEE,CACH,CAAC;IAEF,QAAQ,CACN,yBAAyB,EACzB;;MAEE,CACH,CAAC;IAEF,QAAQ,CACN,mCAAmC,EACnC;;;MAGE,CACH,CAAC;IAEF,QAAQ,CACN,iCAAiC,EACjC;;;;MAIE,CACH,CAAC;IAEF,QAAQ,CACN,2CAA2C,EAC3C;;;;MAIE,CACH,CAAC;IAEF,QAAQ,CACN,mBAAmB,EACnB;gBACY,CACb,CAAC;IAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QACzC,QAAQ,CAAC,gBAAgB,EAAE,oCAAoC,CAAC,CAAC;QACjE,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACvC,QAAQ,CAAC,cAAc,EAAE,oCAAoC,CAAC,CAAC;QAC/D,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;QAChD,QAAQ,CAAC,YAAY,EAAE,8BAA8B,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAErC,QAAQ,CACN,eAAe,EACf;QACE,CACH,CAAC;QAEF,QAAQ,CACN,cAAc,EACd;OACC,CACF,CAAC;QAEF,QAAQ,CACN,cAAc,EACd;;SAEG,CACJ,CAAC;QAEF,QAAQ,CACN,kBAAkB,EAClB;0BACoB,CACrB,CAAC;QAEF,QAAQ,CACN,oDAAoD,EACpD,0BAA0B,CAC3B,CAAC;QAEF,oDAAoD;QACpD,QAAQ,CACN,qCAAqC,EACrC;;;;;;;CAOL,CACI,CAAC;QAEF,QAAQ,CACN,sBAAsB,EACtB;OACC,CACF,CAAC;QAEF,QAAQ,CACN,+BAA+B,EAC/B;;;SAGG,CACJ,CAAC;QAEF,QAAQ,CACN,+BAA+B,EAC/B;;SAEG,CACJ,CAAC;QAEF,QAAQ,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;QAE3C,QAAQ,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QAChD,QAAQ,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;QACjD,QAAQ,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;QAC5C,QAAQ,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;QAE5C,yDAAyD;QACzD,QAAQ,CACN,sBAAsB,EACtB;;;;;;;;CAQL,CACI,CAAC;QAEF,0DAA0D;QAC1D,QAAQ,CACN,qBAAqB,EACrB;;;;;;;;CAQL,CACI,CAAC;QAEF,QAAQ,CACN,+BAA+B,EAC/B;;;;cAIQ,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QAEvC,QAAQ,CACN,kDAAkD,EAClD,8BAA8B,CAC/B,CAAC;QAEF,QAAQ,CAAC,sBAAsB,EAAE,+BAA+B,CAAC,CAAC;QAElE,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAE3C,QAAQ,CAAC,qCAAqC,EAAE,oBAAoB,CAAC,CAAC;QAEtE,QAAQ,CAAC,uBAAuB,EAAE,oCAAoC,CAAC,CAAC;QAExE,QAAQ,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAAC;QAExD,QAAQ,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QAE1C,QAAQ,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;QAEvD,QAAQ,CAAC,uBAAuB,EAAE,4BAA4B,CAAC,CAAC;QAEhE,iGAAiG;QACjG,QAAQ,CAAC,yBAAyB,EAAE,gCAAgC,CAAC,CAAC;QAEtE,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;QAE/C,QAAQ,CAAC,YAAY,EAAE,+BAA+B,CAAC,CAAC;QAExD,QAAQ,CACN,uBAAuB,EACvB;QACE,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,QAAQ,CACN,WAAW,EACX;;UAEI,CACL,CAAC;QAEF,QAAQ,CACN,sBAAsB,EACtB;;UAEI,CACL,CAAC;QAEF,QAAQ,CACN,+BAA+B,EAC/B;;UAEI,CACL,CAAC;QAEF,QAAQ,CACN,4BAA4B,EAC5B;;UAEI,CACL,CAAC;QAEF,QAAQ,CACN,yBAAyB,EACzB;;UAEI,CACL,CAAC;QAEF,QAAQ,CACN,cAAc,EACd;;UAEI,CACL,CAAC;QAEF,QAAQ,CACN,aAAa,EACb;;;;YAIM,CACP,CAAC;QAEF,QAAQ,CACN,aAAa,EACb;;YAEM,CACP,CAAC;QAEF,QAAQ,CACN,aAAa,EACb;;;;;;YAMM,CACP,CAAC;QAEF,QAAQ,CACN,cAAc,EACd;;aAEO,CACR,CAAC;QAEF,QAAQ,CACN,eAAe,EACf;;cAEQ,CACT,CAAC;QAEF,QAAQ,CACN,eAAe,EACf;;cAEQ,CACT,CAAC;QAEF,QAAQ,CACN,cAAc,EACd;;aAEO,CACR,CAAC;QAEF,QAAQ,CACN,2BAA2B,EAC3B;;aAEO,CACR,CAAC;QAEF,QAAQ,CACN,eAAe,EACf;;WAEK,CACN,CAAC;QAEF,QAAQ,CACN,kCAAkC,EAClC;;WAEK,CACN,CAAC;QAEF,QAAQ,CACN,YAAY,EACZ;;;YAGM,CACP,CAAC;QAEF,QAAQ,CACN,cAAc,EACd;;UAEI,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE5B,QAAQ,CAAC,UAAU,EAAE,mDAAmD,CAAC,CAAC;QAE1E,QAAQ,CAAC,+BAA+B,EAAE,cAAc,CAAC,CAAC;QAE1D,QAAQ,CAAC,qBAAqB,EAAE,+BAA+B,CAAC,CAAC;QAEjE,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5B,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACrC,QAAQ,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,CAAC;QAC5D,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;QAChD,QAAQ,CAAC,yBAAyB,EAAE,4BAA4B,CAAC,CAAC;QAElE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC9B,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;YACzC,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAC3C,QAAQ,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;YAC5C,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;YACxC,uCAAuC;YACvC,QAAQ,CAAC,wBAAwB,EAAE,8BAA8B,CAAC,CAAC;YACnE,QAAQ,CACN,iCAAiC,EACjC,8BAA8B,CAC/B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5B,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACrC,QAAQ,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,CAAC;QAC5D,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;QAChD,QAAQ,CAAC,yBAAyB,EAAE,4BAA4B,CAAC,CAAC;QAElE,QAAQ,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QACzC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QAEvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAE/B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC9B,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;YACzC,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAC3C,QAAQ,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;YAC5C,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;YACxC,uCAAuC;YACvC,QAAQ,CAAC,wBAAwB,EAAE,8BAA8B,CAAC,CAAC;YACnE,QAAQ,CACN,iCAAiC,EACjC,8BAA8B,CAC/B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CACN,OAAO,EACP;;;;CAIH,CACE,CAAC;IACF,QAAQ,CACN,gBAAgB,EAChB;;;;;oBAKgB,CACjB,CAAC;IAEF,QAAQ,CACN,mBAAmB,EACnB;;;;CAIH,CACE,CAAC;IAEF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC/B,QAAQ,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;QACrD,QAAQ,CACN,oBAAoB,EACpB;;;6BAGuB,CACxB,CAAC;QACF,QAAQ,CACN,qBAAqB,EACrB;;YAEM,CACP,CAAC;QAEF,QAAQ,CACN,sBAAsB,EACtB;eACS,CACV,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACnC,QAAQ,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;QAC/C,QAAQ,CACN,wBAAwB,EACxB;UACI,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,QAAQ,CAAC,mBAAmB,EAAE,+BAA+B,CAAC,CAAC;QAC/D,QAAQ,CACN,gBAAgB,EAChB,gEAAgE,CACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,QAAQ,CACN,YAAY,EACZ;;aAEO,CACR,CAAC;QAEF,QAAQ,CACN,mCAAmC,EACnC;kCAC4B,CAC7B,CAAC;QAEF,QAAQ,CACN,8CAA8C,EAC9C;;gBAEU,CACX,CAAC;QAEF,QAAQ,CACN,0DAA0D,EAC1D;;;gBAGU,CACX,CAAC;QAEF,QAAQ,CACN,uBAAuB,EACvB;;;;CAIL,CACI,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,QAAQ,CACN,MAAM,EACN;;;UAGI,CACL,CAAC;QAEF,QAAQ,CACN,iBAAiB,EACjB;UACI,CACL,CAAC;QAEF,QAAQ,CACN,mBAAmB,EACnB;;UAEI,CACL,CAAC;QAEF,QAAQ,CACN,wBAAwB,EACxB;;;;;UAKI,CACL,CAAC;QAEF,QAAQ,CACN,kBAAkB,EAClB;;;CAGL,CACI,CAAC;QAEF,QAAQ,CACN,eAAe,EACf;;gBAEU,CACX,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAErC,QAAQ,CACN,0CAA0C,EAC1C;;;;MAIE,CACH,CAAC;IAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,QAAQ,CACN,QAAQ,EACR;;CAEL,CACI,CAAC;QACF,QAAQ,CACN,iBAAiB,EACjB;;;;eAIS,CACV,CAAC;QACF,QAAQ,CACN,uBAAuB,EACvB;;;CAGL,CACI,CAAC;QACF,QAAQ,CACN,YAAY,EACZ;;;CAGL,CACI,CAAC;QACF,QAAQ,CACN,qCAAqC,EACrC;;;;;CAKL,CACI,CAAC;QAEF,QAAQ,CACN,sCAAsC,EACtC;aACO,CACR,CAAC;QAEF,8DAA8D;QAC9D,QAAQ,CAAC,sCAAsC,EAAE,kBAAkB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,QAAQ,CACN,YAAY,EACZ,mEAAmE,CACpE,CAAC;IAEF,QAAQ,CAAC,mCAAmC,EAAE,2BAA2B,CAAC,CAAC;IAE3E,QAAQ,CAAC,wBAAwB,EAAE,4BAA4B,CAAC,CAAC;IAEjE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,QAAQ,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;QAC9C,QAAQ,CACN,kBAAkB,EAClB,kDAAkD,CACnD,CAAC;QACF,QAAQ,CACN,wBAAwB,EACxB,sDAAsD,CACvD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CACN,gBAAgB,EAChB;mDAC+C,CAChD,CAAC;IAEF,QAAQ,CACN,0BAA0B,EAC1B;IACA,CACD,CAAC;IAEF,QAAQ,CACN,oCAAoC,EACpC;;IAEA,CACD,CAAC;IAEF,QAAQ,CACN,oCAAoC,EACpC;;;IAGA,CACD,CAAC;IAEF,QAAQ,CACN,6BAA6B,EAC7B;;;SAGK,CACN,CAAC;IAEF,QAAQ,CACN,4BAA4B,EAC5B;;;KAGC,CACF,CAAC;IAEF,QAAQ,CACN,4BAA4B,EAC5B;;;KAGC,CACF,CAAC;IAEF,QAAQ,CACN,yBAAyB,EACzB;;;QAGI,CACL,CAAC;IAEF,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE/B,QAAQ,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
|