securemark 0.241.0 → 0.242.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/global.dev.d.ts CHANGED
@@ -1,3 +1,7 @@
1
- interface Node {
2
- cloneNode(deep?: boolean): this;
1
+ import 'typed-query-selector';
2
+
3
+ declare global {
4
+ interface Node {
5
+ cloneNode(deep?: boolean): this;
6
+ }
3
7
  }
package/markdown.d.ts CHANGED
@@ -83,6 +83,7 @@ export namespace MarkdownParser {
83
83
  BlockParser.IListParser,
84
84
  BlockParser.DListParser,
85
85
  BlockParser.TableParser,
86
+ BlockParser.IndentBlockParser,
86
87
  BlockParser.CodeBlockParser,
87
88
  BlockParser.MathBlockParser,
88
89
  BlockParser.ExtensionParser,
@@ -271,37 +272,13 @@ export namespace MarkdownParser {
271
272
  }
272
273
  }
273
274
  }
274
- export interface BlockquoteParser extends
275
- // > abc
276
- // !> *abc*
277
- Block<'blockquote'>,
278
- Parser<HTMLQuoteElement, Context, [
279
- BlockquoteParser.SourceParser,
280
- BlockquoteParser.MarkdownParser,
275
+ export interface IndentBlockParser extends
276
+ // abc
277
+ Block<'indentblock'>,
278
+ Parser<HTMLPreElement, Context, [
279
+ CodeBlockParser,
281
280
  ]> {
282
281
  }
283
- export namespace BlockquoteParser {
284
- export interface SegmentParser extends
285
- Block<'blockquote/segment'>,
286
- Parser<never, Context, [
287
- SourceParser.ContentLineParser,
288
- ]> {
289
- }
290
- export interface SourceParser extends
291
- Block<'blockquote/source'>,
292
- Parser<HTMLQuoteElement, Context, [
293
- SourceParser,
294
- AutolinkParser,
295
- ]> {
296
- }
297
- export interface MarkdownParser extends
298
- Block<'blockquote/markdown'>,
299
- Parser<HTMLQuoteElement, Context, [
300
- MarkdownParser,
301
- Parser<HTMLElement, Context, []>,
302
- ]> {
303
- }
304
- }
305
282
  export interface CodeBlockParser extends
306
283
  // ```js index.js
307
284
  // abc
@@ -370,11 +347,12 @@ export namespace MarkdownParser {
370
347
  UListParser,
371
348
  OListParser,
372
349
  BlockParser.TableParser,
350
+ IndentBlockParser,
373
351
  CodeBlockParser,
374
352
  MathBlockParser,
375
- BlockquoteParser,
376
353
  ExampleParser,
377
354
  TableParser,
355
+ BlockquoteParser,
378
356
  PlaceholderParser,
379
357
  InlineParser.MediaParser,
380
358
  InlineParser.ShortmediaParser,
@@ -514,6 +492,7 @@ export namespace MarkdownParser {
514
492
  BlockParser.OListParser,
515
493
  BlockParser.IListParser,
516
494
  BlockParser.TableParser,
495
+ BlockParser.IndentBlockParser,
517
496
  BlockParser.CodeBlockParser,
518
497
  BlockParser.MathBlockParser,
519
498
  BlockParser.BlockquoteParser,
@@ -551,6 +530,37 @@ export namespace MarkdownParser {
551
530
  }
552
531
  }
553
532
  }
533
+ export interface BlockquoteParser extends
534
+ // > abc
535
+ // !> *abc*
536
+ Block<'blockquote'>,
537
+ Parser<HTMLQuoteElement, Context, [
538
+ BlockquoteParser.SourceParser,
539
+ BlockquoteParser.MarkdownParser,
540
+ ]> {
541
+ }
542
+ export namespace BlockquoteParser {
543
+ export interface SegmentParser extends
544
+ Block<'blockquote/segment'>,
545
+ Parser<never, Context, [
546
+ SourceParser.ContentLineParser,
547
+ ]> {
548
+ }
549
+ export interface SourceParser extends
550
+ Block<'blockquote/source'>,
551
+ Parser<HTMLQuoteElement, Context, [
552
+ SourceParser,
553
+ AutolinkParser,
554
+ ]> {
555
+ }
556
+ export interface MarkdownParser extends
557
+ Block<'blockquote/markdown'>,
558
+ Parser<HTMLQuoteElement, Context, [
559
+ MarkdownParser,
560
+ Parser<HTMLElement, Context, []>,
561
+ ]> {
562
+ }
563
+ }
554
564
  export interface ReplyParser extends
555
565
  // >>1
556
566
  // > text
package/package-lock.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "securemark",
3
- "version": "0.241.0",
3
+ "version": "0.242.0",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
7
7
  "@ampproject/remapping": {
8
- "version": "2.1.2",
9
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
10
- "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
8
+ "version": "2.2.0",
9
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
10
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
11
11
  "dev": true,
12
12
  "requires": {
13
- "@jridgewell/trace-mapping": "^0.3.0"
13
+ "@jridgewell/gen-mapping": "^0.1.0",
14
+ "@jridgewell/trace-mapping": "^0.3.9"
14
15
  }
15
16
  },
16
17
  "@babel/code-frame": {
@@ -363,12 +364,28 @@
363
364
  "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
364
365
  "dev": true
365
366
  },
367
+ "@jridgewell/gen-mapping": {
368
+ "version": "0.1.1",
369
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
370
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
371
+ "dev": true,
372
+ "requires": {
373
+ "@jridgewell/set-array": "^1.0.0",
374
+ "@jridgewell/sourcemap-codec": "^1.4.10"
375
+ }
376
+ },
366
377
  "@jridgewell/resolve-uri": {
367
378
  "version": "3.0.6",
368
379
  "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz",
369
380
  "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==",
370
381
  "dev": true
371
382
  },
383
+ "@jridgewell/set-array": {
384
+ "version": "1.1.0",
385
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz",
386
+ "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==",
387
+ "dev": true
388
+ },
372
389
  "@jridgewell/sourcemap-codec": {
373
390
  "version": "1.4.11",
374
391
  "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
@@ -602,9 +619,9 @@
602
619
  "dev": true
603
620
  },
604
621
  "@types/node": {
605
- "version": "17.0.25",
606
- "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz",
607
- "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==",
622
+ "version": "17.0.29",
623
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.29.tgz",
624
+ "integrity": "sha512-tx5jMmMFwx7wBwq/V7OohKDVb/JwJU5qCVkeLMh1//xycAJ/ESuw9aJ9SEtlCZDYi2pBfe4JkisSoAtbOsBNAA==",
608
625
  "dev": true
609
626
  },
610
627
  "@types/power-assert": {
@@ -1683,15 +1700,15 @@
1683
1700
  }
1684
1701
  },
1685
1702
  "browserslist": {
1686
- "version": "4.20.2",
1687
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
1688
- "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
1703
+ "version": "4.20.3",
1704
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz",
1705
+ "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==",
1689
1706
  "dev": true,
1690
1707
  "requires": {
1691
- "caniuse-lite": "^1.0.30001317",
1692
- "electron-to-chromium": "^1.4.84",
1708
+ "caniuse-lite": "^1.0.30001332",
1709
+ "electron-to-chromium": "^1.4.118",
1693
1710
  "escalade": "^3.1.1",
1694
- "node-releases": "^2.0.2",
1711
+ "node-releases": "^2.0.3",
1695
1712
  "picocolors": "^1.0.0"
1696
1713
  }
1697
1714
  },
@@ -2586,9 +2603,9 @@
2586
2603
  "dev": true
2587
2604
  },
2588
2605
  "date-format": {
2589
- "version": "4.0.7",
2590
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.7.tgz",
2591
- "integrity": "sha512-k5xqlzDGIfv2N/DHR/BR8Kc4N9CRy9ReuDkmdxeX/jNfit94QXd36emWMm40ZOEDKNm/c91yV9EO3uGPkR7wWQ==",
2606
+ "version": "4.0.9",
2607
+ "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.9.tgz",
2608
+ "integrity": "sha512-+8J+BOUpSrlKLQLeF8xJJVTxS8QfRSuJgwxSVvslzgO3E6khbI0F5mMEPf5mTYhCCm4h99knYP6H3W9n3BQFrg==",
2592
2609
  "dev": true
2593
2610
  },
2594
2611
  "debug": {
@@ -3058,9 +3075,9 @@
3058
3075
  "dev": true
3059
3076
  },
3060
3077
  "electron-to-chromium": {
3061
- "version": "1.4.118",
3062
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz",
3063
- "integrity": "sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w==",
3078
+ "version": "1.4.123",
3079
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.123.tgz",
3080
+ "integrity": "sha512-0pHGE53WkYoFbsgwYcVKEpWa6jbzlvkohIEA2CUoZ9b5KC+w/zlMiQHvW/4IBcOh7YoEFqRNavgTk02TBoUTUw==",
3064
3081
  "dev": true
3065
3082
  },
3066
3083
  "elliptic": {
@@ -3167,9 +3184,9 @@
3167
3184
  }
3168
3185
  },
3169
3186
  "engine.io": {
3170
- "version": "6.1.3",
3171
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz",
3172
- "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==",
3187
+ "version": "6.2.0",
3188
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz",
3189
+ "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==",
3173
3190
  "dev": true,
3174
3191
  "requires": {
3175
3192
  "@types/cookie": "^0.4.1",
@@ -7107,16 +7124,16 @@
7107
7124
  }
7108
7125
  },
7109
7126
  "log4js": {
7110
- "version": "6.4.5",
7111
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.5.tgz",
7112
- "integrity": "sha512-43RJcYZ7nfUxpPO2woTl8CJ0t5+gucLJZ43mtp2PlInT+LygCp/bl6hNJtKulCJ+++fQsjIv4EO3Mp611PfeLQ==",
7127
+ "version": "6.4.6",
7128
+ "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.6.tgz",
7129
+ "integrity": "sha512-1XMtRBZszmVZqPAOOWczH+Q94AI42mtNWjvjA5RduKTSWjEc56uOBbyM1CJnfN4Ym0wSd8cQ43zOojlSHgRDAw==",
7113
7130
  "dev": true,
7114
7131
  "requires": {
7115
- "date-format": "^4.0.7",
7132
+ "date-format": "^4.0.9",
7116
7133
  "debug": "^4.3.4",
7117
7134
  "flatted": "^3.2.5",
7118
7135
  "rfdc": "^1.3.0",
7119
- "streamroller": "^3.0.7"
7136
+ "streamroller": "^3.0.8"
7120
7137
  },
7121
7138
  "dependencies": {
7122
7139
  "debug": {
@@ -10235,16 +10252,16 @@
10235
10252
  }
10236
10253
  },
10237
10254
  "socket.io": {
10238
- "version": "4.4.1",
10239
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz",
10240
- "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==",
10255
+ "version": "4.5.0",
10256
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.0.tgz",
10257
+ "integrity": "sha512-slTYqU2jCgMjXwresG8grhUi/cC6GjzmcfqArzaH3BN/9I/42eZk9yamNvZJdBfTubkjEdKAKs12NEztId+bUA==",
10241
10258
  "dev": true,
10242
10259
  "requires": {
10243
10260
  "accepts": "~1.3.4",
10244
10261
  "base64id": "~2.0.0",
10245
10262
  "debug": "~4.3.2",
10246
- "engine.io": "~6.1.0",
10247
- "socket.io-adapter": "~2.3.3",
10263
+ "engine.io": "~6.2.0",
10264
+ "socket.io-adapter": "~2.4.0",
10248
10265
  "socket.io-parser": "~4.0.4"
10249
10266
  },
10250
10267
  "dependencies": {
@@ -10266,9 +10283,9 @@
10266
10283
  }
10267
10284
  },
10268
10285
  "socket.io-adapter": {
10269
- "version": "2.3.3",
10270
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz",
10271
- "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==",
10286
+ "version": "2.4.0",
10287
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
10288
+ "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==",
10272
10289
  "dev": true
10273
10290
  },
10274
10291
  "socket.io-parser": {
@@ -10431,9 +10448,9 @@
10431
10448
  "dev": true
10432
10449
  },
10433
10450
  "spica": {
10434
- "version": "0.0.521",
10435
- "resolved": "https://registry.npmjs.org/spica/-/spica-0.0.521.tgz",
10436
- "integrity": "sha512-3WxY7K1QbcMA/9b85F5DsKQutzXJshtKejsudJTIXZovzVWlfdwnBAbQ5opFFiV5/ThDnYnKMO+qvVMNMjB3MQ==",
10451
+ "version": "0.0.524",
10452
+ "resolved": "https://registry.npmjs.org/spica/-/spica-0.0.524.tgz",
10453
+ "integrity": "sha512-gfBpnk65wCBH2Ub8T5PrT3uZqUFCPnrClJM6sS4UsQSYrLyfPlvXc5DmHkDidkgl/UeGbzIlLikf9kMIzgPOqQ==",
10437
10454
  "dev": true
10438
10455
  },
10439
10456
  "split-string": {
@@ -10574,14 +10591,14 @@
10574
10591
  }
10575
10592
  },
10576
10593
  "streamroller": {
10577
- "version": "3.0.7",
10578
- "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.7.tgz",
10579
- "integrity": "sha512-kh68kwiDGuIPiPDWwRbEC5us+kfARP1e9AsQiaLaSqGrctOvMn0mtL8iNY3r4/o5nIoYi3gPI1jexguZsXDlxw==",
10594
+ "version": "3.0.8",
10595
+ "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.8.tgz",
10596
+ "integrity": "sha512-VI+ni3czbFZrd1MrlybxykWZ8sMDCMtTU7YJyhgb9M5X6d1DDxLdJr+gSnmRpXPMnIWxWKMaAE8K0WumBp3lDg==",
10580
10597
  "dev": true,
10581
10598
  "requires": {
10582
- "date-format": "^4.0.7",
10599
+ "date-format": "^4.0.9",
10583
10600
  "debug": "^4.3.4",
10584
- "fs-extra": "^10.0.1"
10601
+ "fs-extra": "^10.1.0"
10585
10602
  },
10586
10603
  "dependencies": {
10587
10604
  "debug": {
@@ -11078,9 +11095,18 @@
11078
11095
  "dev": true
11079
11096
  },
11080
11097
  "typed-dom": {
11081
- "version": "0.0.253",
11082
- "resolved": "https://registry.npmjs.org/typed-dom/-/typed-dom-0.0.253.tgz",
11083
- "integrity": "sha512-g6GJQqmmF7EaMcExhKsOdeTubRS5GuarLctB78EhCHfIxCopWZ5QvrCbygzIFkjEh/zATZlZjLxacYQ+WRHtvg==",
11098
+ "version": "0.0.267",
11099
+ "resolved": "https://registry.npmjs.org/typed-dom/-/typed-dom-0.0.267.tgz",
11100
+ "integrity": "sha512-Zon5ujgW5NDw/Wg5A22LYwKvCq8eyP2/T/gHgnSIoXreX+4v5a/9jhRaPuD1i9bgXjZD5YmYRAHpQ+I5ABWPeg==",
11101
+ "dev": true,
11102
+ "requires": {
11103
+ "typed-query-selector": "^2.6.1"
11104
+ }
11105
+ },
11106
+ "typed-query-selector": {
11107
+ "version": "2.6.1",
11108
+ "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.6.1.tgz",
11109
+ "integrity": "sha512-nzzcDrI0nncM5XTNyqeG7MrcXTx8lelUtNlTP+NvpnOfRzApyr+ZW4H/FoOaPfzmjn++Tf0ZxXpBN7Q3FN3ERw==",
11084
11110
  "dev": true
11085
11111
  },
11086
11112
  "typedarray": {
@@ -11146,14 +11172,14 @@
11146
11172
  }
11147
11173
  },
11148
11174
  "unbox-primitive": {
11149
- "version": "1.0.1",
11150
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
11151
- "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
11175
+ "version": "1.0.2",
11176
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
11177
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
11152
11178
  "dev": true,
11153
11179
  "requires": {
11154
- "function-bind": "^1.1.1",
11155
- "has-bigints": "^1.0.1",
11156
- "has-symbols": "^1.0.2",
11180
+ "call-bind": "^1.0.2",
11181
+ "has-bigints": "^1.0.2",
11182
+ "has-symbols": "^1.0.3",
11157
11183
  "which-boxed-primitive": "^1.0.2"
11158
11184
  }
11159
11185
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "securemark",
3
- "version": "0.241.0",
3
+ "version": "0.242.0",
4
4
  "description": "Secure markdown renderer working on browsers for user input data.",
5
5
  "private": false,
6
6
  "homepage": "https://github.com/falsandtru/securemark",
@@ -61,9 +61,10 @@
61
61
  "npm-check-updates": "^12.5.9",
62
62
  "power-assert": "^1.6.1",
63
63
  "semver": "^7.3.7",
64
- "spica": "0.0.521",
64
+ "spica": "0.0.524",
65
65
  "tsify": "^5.0.4",
66
- "typed-dom": "0.0.253",
66
+ "typed-dom": "0.0.267",
67
+ "typed-query-selector": "^2.6.1",
67
68
  "typescript": "4.6.3",
68
69
  "vinyl-buffer": "^1.0.1",
69
70
  "vinyl-source-stream": "^2.0.0"
@@ -9,8 +9,10 @@ describe('Unit: combinator/indent', () => {
9
9
  assert.deepStrictEqual(inspect(parser(' ', {})), undefined);
10
10
  assert.deepStrictEqual(inspect(parser(' ', {})), undefined);
11
11
  assert.deepStrictEqual(inspect(parser('a ', {})), undefined);
12
+ assert.deepStrictEqual(inspect(parser(' a\n', {})), [['a'], '']);
12
13
  assert.deepStrictEqual(inspect(parser(' a ', {})), [['a '], '']);
13
- assert.deepStrictEqual(inspect(parser(' a ', {})), [['a '], '']);
14
+ assert.deepStrictEqual(inspect(parser(' a \n', {})), [['a '], '']);
15
+ assert.deepStrictEqual(inspect(parser(' a', {})), [['a'], '']);
14
16
  assert.deepStrictEqual(inspect(parser(' a\n a', {})), [['a\na'], '']);
15
17
  assert.deepStrictEqual(inspect(parser(' a\n a', {})), [['a\n a'], '']);
16
18
  assert.deepStrictEqual(inspect(parser(' a\n a', {})), [['a'], ' a']);
@@ -1,6 +1,7 @@
1
1
  import { undefined } from 'spica/global';
2
2
  import { Parser, eval, exec } from '../../data/parser';
3
3
  import { some } from '../../data/parser/some';
4
+ import { block } from '../constraint/block';
4
5
  import { line } from '../constraint/line';
5
6
  import { bind } from '../monad/bind';
6
7
  import { match } from './match';
@@ -8,15 +9,15 @@ import { open } from './surround';
8
9
  import { memoize } from 'spica/memoize';
9
10
  import { join } from 'spica/array';
10
11
 
11
- export function indent<P extends Parser<unknown>>(parser: P): P;
12
- export function indent<T>(parser: Parser<T>): Parser<T> {
12
+ export function indent<P extends Parser<unknown>>(parser: P, separation?: boolean): P;
13
+ export function indent<T>(parser: Parser<T>, separation = false): Parser<T> {
13
14
  assert(parser);
14
- return bind(match(
15
+ return bind(block(match(
15
16
  /^(?=(([ \t])\2*))/,
16
17
  memoize(
17
18
  ([, indent]) =>
18
19
  some(line(open(indent, source => [[unline(source)], '']))),
19
- ([, indent]) => indent.length * 2 + +(indent[0] === ' '), [])),
20
+ ([, indent]) => indent.length * 2 + +(indent[0] === ' '), [])), separation),
20
21
  (nodes, rest, context) => {
21
22
  const result = parser(join(nodes, '\n'), context);
22
23
  return result && exec(result) === ''
@@ -76,10 +76,10 @@ describe('Unit: parser/block/blockquote', () => {
76
76
  assert.deepStrictEqual(inspect(parser('!>> a')), [['<blockquote><blockquote><section><p>a</p><ol class="annotations"></ol><ol class="references"></ol></section></blockquote></blockquote>'], '']);
77
77
  assert.deepStrictEqual(inspect(parser('!>> a\n> b')), [['<blockquote><blockquote><section><p>a</p><ol class="annotations"></ol><ol class="references"></ol></section></blockquote><section><p>b</p><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
78
78
  assert.deepStrictEqual(inspect(parser('!> - a')), [['<blockquote><section><ul><li>a</li></ul><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
79
- assert.deepStrictEqual(inspect(parser('!> ```\na\n```')), [['<blockquote><section><pre class="text" translate="no">a</pre><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
80
- assert.deepStrictEqual(inspect(parser('!> ```\n> a\n```')), [['<blockquote><section><pre class="text" translate="no">a</pre><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
81
- assert.deepStrictEqual(inspect(parser('!> ```\n> a\n> ```')), [['<blockquote><section><pre class="text" translate="no">a</pre><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
82
- assert.deepStrictEqual(inspect(parser('!> ```\n> a\n> \n> b\n> ```')), [['<blockquote><section><pre class="text" translate="no">a<br><br>b</pre><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
79
+ assert.deepStrictEqual(inspect(parser('!> ```\na\n```')), [['<blockquote><section><pre class="text">a</pre><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
80
+ assert.deepStrictEqual(inspect(parser('!> ```\n> a\n```')), [['<blockquote><section><pre class="text">a</pre><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
81
+ assert.deepStrictEqual(inspect(parser('!> ```\n> a\n> ```')), [['<blockquote><section><pre class="text">a</pre><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
82
+ assert.deepStrictEqual(inspect(parser('!> ```\n> a\n> \n> b\n> ```')), [['<blockquote><section><pre class="text">a<br><br>b</pre><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
83
83
  assert.deepStrictEqual(inspect(parser('!> a\n>\n> b')), [['<blockquote><section><p>a</p><p>b</p><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
84
84
  assert.deepStrictEqual(inspect(parser('!> > a')), [['<blockquote><section><blockquote><pre>a</pre></blockquote><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
85
85
  assert.deepStrictEqual(inspect(parser('!> > a\n> b')), [['<blockquote><section><blockquote><pre>a<br>b</pre></blockquote><ol class="annotations"></ol><ol class="references"></ol></section></blockquote>'], '']);
@@ -24,24 +24,24 @@ describe('Unit: parser/block/codeblock', () => {
24
24
  });
25
25
 
26
26
  it('basic', () => {
27
- assert.deepStrictEqual(inspect(parser('```\n```')), [['<pre class="text" translate="no"></pre>'], '']);
28
- assert.deepStrictEqual(inspect(parser('```\n\n```')), [['<pre class="text" translate="no"></pre>'], '']);
29
- assert.deepStrictEqual(inspect(parser('```\na\n```')), [['<pre class="text" translate="no">a</pre>'], '']);
30
- assert.deepStrictEqual(inspect(parser('```\na\nb\n```')), [['<pre class="text" translate="no">a<br>b</pre>'], '']);
31
- assert.deepStrictEqual(inspect(parser('```\n\\\n```')), [['<pre class="text" translate="no">\\</pre>'], '']);
32
- assert.deepStrictEqual(inspect(parser('```\n`\n```')), [['<pre class="text" translate="no">`</pre>'], '']);
33
- assert.deepStrictEqual(inspect(parser('```\n```\n```')), [['<pre class="text" translate="no">```</pre>'], '']);
34
- assert.deepStrictEqual(inspect(parser('```\n```\n\n```')), [['<pre class="text" translate="no"></pre>'], '\n```']);
35
- assert.deepStrictEqual(inspect(parser('```\n````\n```')), [['<pre class="text" translate="no">````</pre>'], '']);
36
- assert.deepStrictEqual(inspect(parser('```\n````\n\n```')), [['<pre class="text" translate="no">````<br></pre>'], '']);
37
- assert.deepStrictEqual(inspect(parser('````\n```\n````')), [['<pre class="text" translate="no">```</pre>'], '']);
38
- assert.deepStrictEqual(inspect(parser('````\n```\n\n````')), [['<pre class="text" translate="no">```<br></pre>'], '']);
39
- assert.deepStrictEqual(inspect(parser('```\n\n```\n')), [['<pre class="text" translate="no"></pre>'], '']);
40
- assert.deepStrictEqual(inspect(parser('```\nhttp://host\n```')), [['<pre class="text" translate="no"><a href="http://host" target="_blank">http://host</a></pre>'], '']);
41
- assert.deepStrictEqual(inspect(parser('```\n!http://host\n```')), [['<pre class="text" translate="no">!<a href="http://host" target="_blank">http://host</a></pre>'], '']);
42
- assert.deepStrictEqual(inspect(parser('```\n#a\n```')), [['<pre class="text" translate="no"><a href="/hashtags/a" class="hashtag">#a</a></pre>'], '']);
43
- assert.deepStrictEqual(inspect(parser('```\n@a#b\n```')), [['<pre class="text" translate="no"><a href="/@a?ch=b" class="channel">@a#b</a></pre>'], '']);
44
- assert.deepStrictEqual(inspect(parser(`\`\`\`\n0${'\n'.repeat(300)}\`\`\``), '>'), [['<pre class="text" translate="no">'], '']);
27
+ assert.deepStrictEqual(inspect(parser('```\n```')), [['<pre class="text"></pre>'], '']);
28
+ assert.deepStrictEqual(inspect(parser('```\n\n```')), [['<pre class="text"></pre>'], '']);
29
+ assert.deepStrictEqual(inspect(parser('```\na\n```')), [['<pre class="text">a</pre>'], '']);
30
+ assert.deepStrictEqual(inspect(parser('```\na\nb\n```')), [['<pre class="text">a<br>b</pre>'], '']);
31
+ assert.deepStrictEqual(inspect(parser('```\n\\\n```')), [['<pre class="text">\\</pre>'], '']);
32
+ assert.deepStrictEqual(inspect(parser('```\n`\n```')), [['<pre class="text">`</pre>'], '']);
33
+ assert.deepStrictEqual(inspect(parser('```\n```\n```')), [['<pre class="text">```</pre>'], '']);
34
+ assert.deepStrictEqual(inspect(parser('```\n```\n\n```')), [['<pre class="text"></pre>'], '\n```']);
35
+ assert.deepStrictEqual(inspect(parser('```\n````\n```')), [['<pre class="text">````</pre>'], '']);
36
+ assert.deepStrictEqual(inspect(parser('```\n````\n\n```')), [['<pre class="text">````<br></pre>'], '']);
37
+ assert.deepStrictEqual(inspect(parser('````\n```\n````')), [['<pre class="text">```</pre>'], '']);
38
+ assert.deepStrictEqual(inspect(parser('````\n```\n\n````')), [['<pre class="text">```<br></pre>'], '']);
39
+ assert.deepStrictEqual(inspect(parser('```\n\n```\n')), [['<pre class="text"></pre>'], '']);
40
+ assert.deepStrictEqual(inspect(parser('```\nhttp://host\n```')), [['<pre class="text"><a href="http://host" target="_blank">http://host</a></pre>'], '']);
41
+ assert.deepStrictEqual(inspect(parser('```\n!http://host\n```')), [['<pre class="text">!<a href="http://host" target="_blank">http://host</a></pre>'], '']);
42
+ assert.deepStrictEqual(inspect(parser('```\n#a\n```')), [['<pre class="text"><a href="/hashtags/a" class="hashtag">#a</a></pre>'], '']);
43
+ assert.deepStrictEqual(inspect(parser('```\n@a#b\n```')), [['<pre class="text"><a href="/@a?ch=b" class="channel">@a#b</a></pre>'], '']);
44
+ assert.deepStrictEqual(inspect(parser(`\`\`\`\n0${'\n'.repeat(300)}\`\`\``), '>'), [['<pre class="text">'], '']);
45
45
  });
46
46
 
47
47
  it('attribute', () => {
@@ -50,21 +50,21 @@ describe('Unit: parser/block/codeblock', () => {
50
50
  assert.deepStrictEqual(inspect(parser('```A\n```')), [['<pre class="code language-a" translate="no" data-lang="a"></pre>'], '']);
51
51
  assert.deepStrictEqual(inspect(parser('```a-b\n```')), [['<pre class="code language-a-b" translate="no" data-lang="a-b"></pre>'], '']);
52
52
  assert.deepStrictEqual(inspect(parser('```a-b0\n```')), [['<pre class="code language-a-b0" translate="no" data-lang="a-b0"></pre>'], '']);
53
- assert.deepStrictEqual(inspect(parser('```a--b\n```')), [['<pre class="text" translate="no" data-path="a--b"></pre>'], '']);
54
- assert.deepStrictEqual(inspect(parser('``` b\n```')), [['<pre class="text" translate="no" data-path="b"></pre>'], '']);
53
+ assert.deepStrictEqual(inspect(parser('```a--b\n```')), [['<pre class="text" data-path="a--b"></pre>'], '']);
54
+ assert.deepStrictEqual(inspect(parser('``` b\n```')), [['<pre class="text" data-path="b"></pre>'], '']);
55
55
  assert.deepStrictEqual(inspect(parser('``` b c\n```')), [['<pre class="invalid" translate="no">``` b c\n```</pre>'], '']);
56
- assert.deepStrictEqual(inspect(parser('``` b\\ c\n```')), [['<pre class="text" translate="no" data-path="b\\ c"></pre>'], '']);
56
+ assert.deepStrictEqual(inspect(parser('``` b\\ c\n```')), [['<pre class="text" data-path="b\\ c"></pre>'], '']);
57
57
  assert.deepStrictEqual(inspect(parser('``` b.c\n```')), [['<pre class="code language-c" translate="no" data-lang="c" data-path="b.c"></pre>'], '']);
58
- assert.deepStrictEqual(inspect(parser('``` .b\n```')), [['<pre class="text" translate="no" data-path=".b"></pre>'], '']);
59
- assert.deepStrictEqual(inspect(parser('``` b \n```')), [['<pre class="text" translate="no" data-path="b"></pre>'], '']);
60
- assert.deepStrictEqual(inspect(parser('``` ~/.b\n```')), [['<pre class="text" translate="no" data-path="~/.b"></pre>'], '']);
58
+ assert.deepStrictEqual(inspect(parser('``` .b\n```')), [['<pre class="text" data-path=".b"></pre>'], '']);
59
+ assert.deepStrictEqual(inspect(parser('``` b \n```')), [['<pre class="text" data-path="b"></pre>'], '']);
60
+ assert.deepStrictEqual(inspect(parser('``` ~/.b\n```')), [['<pre class="text" data-path="~/.b"></pre>'], '']);
61
61
  assert.deepStrictEqual(inspect(parser('``` ~/b.c\n```')), [['<pre class="code language-c" translate="no" data-lang="c" data-path="~/b.c"></pre>'], '']);
62
- assert.deepStrictEqual(inspect(parser('```.b\n```')), [['<pre class="text" translate="no" data-path=".b"></pre>'], '']);
62
+ assert.deepStrictEqual(inspect(parser('```.b\n```')), [['<pre class="text" data-path=".b"></pre>'], '']);
63
63
  assert.deepStrictEqual(inspect(parser('```b.c\n```')), [['<pre class="code language-c" translate="no" data-lang="c" data-path="b.c"></pre>'], '']);
64
64
  assert.deepStrictEqual(inspect(parser('```a b.c\n```')), [['<pre class="code language-a" translate="no" data-lang="a" data-path="b.c"></pre>'], '']);
65
65
  assert.deepStrictEqual(inspect(parser('```a 1\n```')), [['<pre class="code language-a" translate="no" data-lang="a" data-line="1"></pre>'], '']);
66
- assert.deepStrictEqual(inspect(parser('``` 1\n```')), [['<pre class="text" translate="no" data-line="1"></pre>'], '']);
67
- assert.deepStrictEqual(inspect(parser('``` 1,2-3\n```')), [['<pre class="text" translate="no" data-line="1,2-3"></pre>'], '']);
66
+ assert.deepStrictEqual(inspect(parser('``` 1\n```')), [['<pre class="text" data-line="1"></pre>'], '']);
67
+ assert.deepStrictEqual(inspect(parser('``` 1,2-3\n```')), [['<pre class="text" data-line="1,2-3"></pre>'], '']);
68
68
  assert.deepStrictEqual(inspect(parser('``` 1 b.c\n```')), [['<pre class="code language-c" translate="no" data-lang="c" data-line="1" data-path="b.c"></pre>'], '']);
69
69
  });
70
70
 
@@ -59,7 +59,7 @@ export const codeblock: CodeBlockParser = block(validate('```', fmap(
59
59
  const el = html('pre',
60
60
  {
61
61
  class: params.lang ? `code language-${params.lang}` : 'text',
62
- translate: 'no',
62
+ translate: params.lang ? 'no' : undefined,
63
63
  'data-lang': params.lang || undefined,
64
64
  'data-line': params.line || undefined,
65
65
  'data-path': params.path || undefined,
@@ -26,9 +26,9 @@ describe('Unit: parser/block/extension/fig', () => {
26
26
  assert.deepStrictEqual(inspect(parser('[$group-name]\n!https://host\n')), [['<figure data-type="media" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><a href="https://host" target="_blank"><img class="media" data-src="https://host" alt=""></a></div></figure>'], '']);
27
27
  assert.deepStrictEqual(inspect(parser('[$group-name]\n|\n|-\n|')), [['<figure data-type="table" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div></figure>'], '']);
28
28
  assert.deepStrictEqual(inspect(parser('[$group-name]\n|\n|-\n|\n')), [['<figure data-type="table" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div></figure>'], '']);
29
- assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n\n```')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><pre class="text" translate="no"></pre></div></figure>'], '']);
30
- assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n\n```\n')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><pre class="text" translate="no"></pre></div></figure>'], '']);
31
- assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n~~~\n```')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><pre class="text" translate="no">~~~</pre></div></figure>'], '']);
29
+ assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n\n```')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><pre class="text"></pre></div></figure>'], '']);
30
+ assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n\n```\n')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><pre class="text"></pre></div></figure>'], '']);
31
+ assert.deepStrictEqual(inspect(parser('[$group-name]\n```\n~~~\n```')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><pre class="text">~~~</pre></div></figure>'], '']);
32
32
  assert.deepStrictEqual(inspect(parser('[$group-name]\n$$\n\n$$')), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
33
33
  assert.deepStrictEqual(inspect(parser('[$group-name]\n$$\n\n$$\n')), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
34
34
  assert.deepStrictEqual(inspect(parser('[$group-name]\n~~~example/markdown\n~~~')), [['<figure data-type="example" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><aside class="example" data-type="markdown"><pre translate="no"></pre><hr><section><ol class="annotations"></ol><ol class="references"></ol></section></aside></div></figure>'], '']);
@@ -26,7 +26,7 @@ export const segment: FigParser.SegmentParser = block(validate(['[$', '$'],
26
26
 
27
27
  export const fig: FigParser = block(rewrite(segment, convert(
28
28
  source => {
29
- const fence = (/^[^\n]*\n!?>+\s/.test(source) && source.match(/^~{3,}(?=\s*$)/mg) || [])
29
+ const fence = (/^[^\n]*\n!?>+\s/.test(source) && source.match(/^~{3,}(?=[^\S\n]*$)/mg) || [])
30
30
  .reduce((max, fence) => fence > max ? fence : max, '~~') + '~';
31
31
  return `${fence}figure ${source}\n\n${fence}`;
32
32
  },
@@ -46,9 +46,9 @@ describe('Unit: parser/block/extension/figure', () => {
46
46
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n- a\n~~~')), [['<figure data-type="list" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><ul><li>a</li></ul></div></figure>'], '']);
47
47
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n1. a\n~~~')), [['<figure data-type="list" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><ol><li>a</li></ol></div></figure>'], '']);
48
48
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n|\n|-\n|\n~~~')), [['<figure data-type="table" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><table><thead><tr></tr></thead><tbody><tr></tr></tbody></table></div></figure>'], '']);
49
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n\n```\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><pre class="text" translate="no"></pre></div></figure>'], '']);
50
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n~~~\n```\n\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><pre class="text" translate="no">~~~</pre></div></figure>'], '']);
51
- assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n```\n\ncaption\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span>caption</figcaption><div><pre class="text" translate="no"></pre></div></figure>'], '']);
49
+ assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n\n```\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><pre class="text"></pre></div></figure>'], '']);
50
+ assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n~~~\n```\n\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><pre class="text">~~~</pre></div></figure>'], '']);
51
+ assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n```\n```\n\ncaption\n~~~')), [['<figure data-type="text" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span>caption</figcaption><div><pre class="text"></pre></div></figure>'], '']);
52
52
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n\n$$\n~~~')), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);
53
53
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n~~~\n$$\n~~~')), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span></figcaption><div><div class="math" translate="no">$$\n~~~\n$$</div></div></figure>'], '']);
54
54
  assert.deepStrictEqual(inspect(parser('~~~figure [$group-name]\n$$\n\n$$\n\ncaption\n~~~')), [['<figure data-type="math" data-label="group-name" data-group="group"><figcaption><span class="figindex"></span>caption</figcaption><div><div class="math" translate="no">$$\n\n$$</div></div></figure>'], '']);