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