uniorg-parse 0.4.4 → 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/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "uniorg-parse",
3
- "version": "0.4.4",
3
+ "version": "0.5.1",
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": "^26.0.20",
40
- "@types/unist": "^2.0.3",
41
- "jest": "^26.6.3",
42
- "typescript": "^4.1.3",
43
- "uniorg": "^0.4.0",
44
- "yaml": "^2.0.0-1"
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": "^2.0.3",
48
- "vfile": "^4.2.1",
49
- "vfile-location": "^3.2.0"
50
+ "unist-builder": "3.0.0",
51
+ "vfile": "5.3.2",
52
+ "vfile-location": "4.0.1"
50
53
  },
51
- "gitHead": "0ac9f2d912a3c3f9814383c793f7ce3036c6a135"
54
+ "gitHead": "47b506d61fe3190dac76d16db283b1af62f35f0d"
52
55
  }
@@ -1 +0,0 @@
1
- export {};
@@ -1,503 +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
- itParses.todo('diary');
167
- });
168
- describe('list', () => {
169
- itParses('single-item list', `- hi`);
170
- itParses('two-item list', `- hi
171
- - there`);
172
- itParses('ordered list', `1. one
173
- 2. two`);
174
- itParses('nested lists', `- there
175
- - nested
176
- - list`);
177
- itParses('description list', `- term1 :: description 1
178
- - term 2 :: description 2`);
179
- itParses('description list > skips trailing spaces after tag', `- term :: description`);
180
- // See https://github.com/rasendubi/uniorg/issues/15
181
- itParses('formatting in description list tags', `
182
- - [[https://example.com][Example]] :: Hello there!
183
- - [[https://github.com][GitHub]] :: This is GitHub, your hub for Git repos.
184
- - *Gitlab* :: Alternative to GitHub
185
- - /Sourcehut/ :: Another alternative to GitHub that primarily uses email-based workflows.
186
- - /Codeberg/ :: *ANOTHER ALTERNATIVE*
187
- - /*self-hosting Git server*/ :: /*The ultimate Git solution for privacy-oriented individuals!*/
188
- `);
189
- itParses('list after paragraph', `hello
190
- - list`);
191
- itParses('two empty lines breaking list', `- list1
192
-
193
-
194
- - list 2`);
195
- itParses('empty line between list items', `- item 1
196
-
197
- - item 2`);
198
- itParses('fake list numbers', `- 1. blah`);
199
- itParses('checkbox item [ ]', `- [ ] not done`);
200
- itParses('checkbox item [-]', `- [-] half-done`);
201
- itParses('checkbox item [x]', `- [x] done`);
202
- itParses('checkbox item [X]', `- [X] done`);
203
- // two empty lines finish lists but not if inside a block
204
- itParses('long blocks in lists', `
205
- - list
206
- #+begin_src c
207
- x
208
-
209
-
210
- y
211
- #+end_src
212
- `);
213
- // two empty lines finish lists but not if inside a drawer
214
- itParses('long drawer in list', `
215
- - list
216
- :DRAWER:
217
- x
218
-
219
-
220
- y
221
- :END:
222
- `);
223
- });
224
- describe('links', () => {
225
- itParses('link', `http://example.com`);
226
- itParses('plain link does not include trailing punctuation', `Example: http://example.com.`);
227
- itParses('link mixed with text', `hello http://example.com blah`);
228
- itParses('regular link', `[[link][text]]`);
229
- itParses('regular link with longer link slash', `[[longlink][text]]`);
230
- itParses('two links in one line', `[[link1][text1]] [[link2][text2]] `);
231
- itParses('link after text', `some text [[link][text]]`);
232
- itParses('link with no text', `[[link]]`);
233
- itParses('./ as start of file link', `[[./file.org]]`);
234
- itParses('file link with spaces', `[[./file with spaces.org]]`);
235
- // note that these are actual percents in the file name, not a url-encoded "file with spaces.org"
236
- itParses('file link with percents', `[[./file%2Bwith%2Bspaces.org]]`);
237
- itParses('angle link', `<http://example.com>`);
238
- itParses('https link', `[[https://example.com/hello]]`);
239
- itParses('multiline description', `[[www.something.com][line1
240
- line2]]`);
241
- });
242
- describe('blocks', () => {
243
- itParses('src block', `#+begin_src
244
- hello
245
- #+end_src`);
246
- itParses('escaper in src block', `#+begin_src c
247
- ,*a = 0;
248
- #+end_src`);
249
- itParses('headline escaper in src block', `#+begin_src org
250
- ,* not a headline;
251
- #+end_src`);
252
- itParses('comma escaper in src block', `#+begin_src org
253
- ,,,* two commas escaped
254
- #+end_src`);
255
- itParses('#+ escaper in src block', `#+begin_src org
256
- ,#+ escaped
257
- #+end_src`);
258
- itParses('fake escaper', `#+begin_src org
259
- ,# nont escaped
260
- #+end_src`);
261
- itParses('src in list', `
262
- - example:
263
- #+begin_src
264
- blah
265
- #+end_src`);
266
- itParses('quote block', `#+begin_quote
267
- hello
268
- #+end_quote`);
269
- itParses('verse block', `#+BEGIN_VERSE
270
- Great clouds overhead
271
- Tiny black birds rise and fall
272
- Snow covers Emacs
273
-
274
- ---AlexSchroeder
275
- #+END_VERSE`);
276
- itParses('center block', `#+begin_center
277
- hello
278
- #+end_center`);
279
- itParses('comment block', `#+begin_comment
280
- hello
281
- #+end_comment`);
282
- itParses('example block', `#+begin_example
283
- hi
284
- #+end_example`);
285
- itParses('export block', `#+begin_export
286
- hi
287
- #+end_export`);
288
- itParses('export block with backend', `#+begin_export html
289
- hi
290
- #+end_export`);
291
- itParses('special block', `#+begin_blah
292
- hello
293
- #+end_blah`);
294
- itParses('incomplete block after paragraph', `hello
295
- #+begin_src
296
- not a code`);
297
- itParses('fake block', `#+nonblock
298
- #+begin_block
299
- hello
300
- #+end_block`);
301
- itParses('fake block 2', `#+ begin_src
302
- not a block
303
- #+end_src`);
304
- });
305
- describe('emphasis marks', () => {
306
- itParses('bold', `*hello*`);
307
- itParses('emphasis', `/Consider/ ~t*h*e~ *following* =example= +strike+`);
308
- itParses('C++ accidental strike-through', `C++ blah C++`);
309
- itParses('emphasis boundaries', `a/a/ b*b* c~c~ d=d= e+e+ f_f_`);
310
- itParses('hanging /', `- hello/other`);
311
- });
312
- describe('superscript', () => {
313
- itParses('simple', `hello^world`);
314
- itParses('braces', `H^{+}`);
315
- itParses('nested braces', `H^{{x}}`);
316
- itParses('nested braces, 3 levels', `H^{hello{hi{there}}}`);
317
- itParses('spaces in braces', `H^{hello world}`);
318
- itParses('multiple nesting groups', `H^{hello{there}and{there}}`);
319
- describe('no superscript', () => {
320
- itParses('begginning of line', `^hello`);
321
- itParses('pre whitespace', `hello ^there`);
322
- itParses('post whitespace', `hello^ there`);
323
- itParses('unbalanced braces', `H^{{+}`);
324
- // replicating emacs +bugs+ limitations
325
- itParses('too many nested braces', `H^{hello{hi{there{hello?}}}}`);
326
- itParses('multiple 2-level nesting groups', `H^{hello{there{}}and{there}}`);
327
- });
328
- });
329
- describe('subscript', () => {
330
- itParses('simple', `hello_world`);
331
- itParses('braces', `H_{+}`);
332
- itParses('nested braces', `H_{{x}}`);
333
- itParses('nested braces, 3 levels', `H_{hello{hi{there}}}`);
334
- itParses('spaces in braces', `H_{hello world}`);
335
- itParses('multiple nesting groups', `H_{hello{there}and{there}}`);
336
- itParses('after superscript', `H^12_22`);
337
- itParses('after subscript', `H_12_22`);
338
- itParses('trailing _', `f_f_`);
339
- describe('no superscript', () => {
340
- itParses('begginning of line', `_hello`);
341
- itParses('pre whitespace', `hello _there`);
342
- itParses('post whitespace', `hello_ there`);
343
- itParses('unbalanced braces', `H_{{+}`);
344
- // replicating emacs +bugs+ limitations
345
- itParses('too many nested braces', `H_{hello{hi{there{hello?}}}}`);
346
- itParses('multiple 2-level nesting groups', `H_{hello{there{}}and{there}}`);
347
- });
348
- });
349
- itParses('table', `
350
- | head1 | head2 |
351
- |--------+-------|
352
- | value1 | value2 |
353
- `);
354
- itParses('table.el table', `
355
- +--------+--------+
356
- | head1 | head2 |
357
- +--------+--------+
358
- | value1 | value2 |
359
- +--------+--------+`);
360
- itParses('table with format', `
361
- | 1 |
362
- | 2 |
363
- #+TBLFM: $2=$1^2::$3=$1^3
364
- `);
365
- describe('comments', () => {
366
- itParses('empty comment', `#`);
367
- itParses('single-line comment', `# this is comment`);
368
- itParses('multi-line comment', `# first line
369
- # second
370
- # third
371
- # fourth`);
372
- itParses('no comments in list', `
373
- - # not a comment
374
- # comment`);
375
- itParses('does not eat keyword', `# this is comment
376
- #+title: hello`);
377
- });
378
- describe('fixed-width', () => {
379
- itParses('empty fixed-width', `:`);
380
- itParses('single-line fixed-width', `: hello`);
381
- itParses('multi-line fixed-width', `: hello
382
- : world`);
383
- });
384
- describe('clock', () => {
385
- itParses('clock in progress', `CLOCK: [2021-01-10 Sun 14:36]`);
386
- itParses('finished clock', `CLOCK: [2020-12-22 Tue 09:07]--[2020-12-22 Tue 11:10] => 2:03`);
387
- });
388
- describe('latex environment', () => {
389
- itParses('multi-line', `\\begin{hello}
390
- some text
391
- \\end{hello}`);
392
- itParses('latex environment after paragraph', `hello
393
- \\begin{hello} there \\end{hello}`);
394
- itParses('incomplete latex environment after paragraph', `hello
395
- \\begin{hello}
396
- I am incomplete`);
397
- itParses('incomplete latex environment after paragraph (two lines)', `hello
398
- there
399
- \\begin{hello}
400
- I am incomplete`);
401
- itParses('environment with star', `
402
- \\begin{equation*}
403
- blah
404
- \\end{equation*}
405
- `);
406
- });
407
- describe('affiliated keyword', () => {
408
- itParses('name', `#+NAME: source
409
- #+begin_src org
410
- some paragraph
411
- #+end_src`);
412
- itParses('parsed keywords', `#+CAPTION: hello *world*
413
- paragraph`);
414
- itParses('multiple keywords', `#+NAME: name
415
- #+CAPTION: hi
416
- paragraph`);
417
- itParses('multiple same keywords', `
418
- #+NAME: name1
419
- #+NAME: name2
420
- #+CAPTION: caption1
421
- #+CAPTION: caption2
422
- paragraph`);
423
- itParses('keyword renaming', `#+srcname: hi
424
- #+begin_src
425
- #+end_src
426
- `);
427
- itParses('dual keywords', `
428
- #+RESULTS[A]:
429
- : Hello, world!`);
430
- });
431
- itParses('horizontal rule', `-----`);
432
- itParses('horizontal rule between paragraphs (#11)', `Hello
433
-
434
- -----
435
-
436
- World`);
437
- describe('footnote definition', () => {
438
- itParses('simple', `
439
- [fn:hello] this is footnote definition
440
- `);
441
- itParses('paragraph split', `
442
- [fn:hello] hello
443
-
444
-
445
- next paragraph`);
446
- itParses('starting on next line', `
447
- [fn:hello]
448
- footnote
449
- `);
450
- itParses('sequential', `
451
- [fn:hello] footnote1
452
- [fn:2] footnote2
453
- `);
454
- itParses('sequential with affiliated keywords', `
455
- #+NAME: f1
456
- [fn:hello] footnote1
457
- #+NAME: f2
458
- [fn:2] footnote2
459
- `);
460
- itParses('footnote definition splits paragraph', `hello
461
- [fn:1] hello`);
462
- // note that footnote content is ": footnote", not "footnote".
463
- itParses('footnote definition with : following', `[fn:1]: footnote`);
464
- });
465
- itParses('diary sexp', `%%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old)`);
466
- itParses('diary sexp with newline following', `%%(diary-anniversaries)\n`);
467
- itParses('non-closing diary sexp', `%%(I am still a diary-sexp`);
468
- describe('footnote-reference', () => {
469
- itParses('standard reference', `hello[fn:1]`);
470
- itParses('inline reference', `hello[fn:: this is inline /footnote/ definition]`);
471
- itParses('named inline reference', `hello[fn:name: this is inline /footnote/ definition]`);
472
- });
473
- itParses('latex-fragment', `If $a^2=b$ and \\( b=2 \\), then the solution must be
474
- either $$ a=+\\sqrt{2} $$ or \\[ a=-\\sqrt{2} \\].`);
475
- itParses('multiline latex fragment', `$$2+
476
- 2$$`);
477
- itParses('multiline latex fragment (3 lines)', `$$2
478
- 2
479
- 2$$`);
480
- itParses('multiline latex fragment (4 lines)', `$$2
481
- 2
482
- 2
483
- 2$$`);
484
- itParses('multiline single-$ fragment', `hello $2
485
- 2
486
- 2
487
- 2$ world`);
488
- itParses('multiline \\[ \\] fragment', `\\[2
489
- 2
490
- 2
491
- 2\\]`);
492
- itParses('multiline \\( \\) fragment', `\\(2
493
- 2
494
- 2
495
- 2\\)`);
496
- itParses('fake multiline fragment', `hello $2
497
- 2
498
- 2
499
- 2 world`);
500
- itParses('entity', `\\Agrave`);
501
- itParses('entity in parentheses', `(\\leq)`);
502
- });
503
- //# sourceMappingURL=parser.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.spec.js","sourceRoot":"","sources":["../src/parser.spec.ts"],"names":[],"mappings":"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"}