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/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "uniorg-parse",
3
- "version": "0.4.5",
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": "^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": "3d6bc077f2ee16eebf35d57e6b93d98022e0b65d"
54
+ "gitHead": "e77afd8255895985eaa8b0cf15de8edab81a89b6"
52
55
  }
@@ -1 +0,0 @@
1
- export {};
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.spec.js","sourceRoot":"","sources":["../src/parser.spec.ts"],"names":[],"mappings":"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"}