@podlite/schema 0.0.55 → 0.0.57
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/CHANGELOG.podlite +32 -0
- package/esm/ast-helpers.d.ts +1 -0
- package/esm/ast-helpers.js +9 -0
- package/esm/ast-helpers.js.map +1 -1
- package/esm/block-names.d.ts +4 -0
- package/esm/block-names.js +44 -0
- package/esm/block-names.js.map +1 -0
- package/esm/exportHtml.js +39 -16
- package/esm/exportHtml.js.map +1 -1
- package/esm/exportMarkdown.js +10 -0
- package/esm/exportMarkdown.js.map +1 -1
- package/esm/grammar.js +2283 -851
- package/esm/grammar.js.map +1 -1
- package/esm/grammarfc.js +419 -401
- package/esm/grammarfc.js.map +1 -1
- package/esm/index.d.ts +3 -1
- package/esm/index.js +4 -2
- package/esm/index.js.map +1 -1
- package/esm/pluggableParser.js +11 -2
- package/esm/pluggableParser.js.map +1 -1
- package/esm/plugin-items.js +23 -8
- package/esm/plugin-items.js.map +1 -1
- package/esm/types.d.ts +17 -2
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/lib/ast-helpers.d.ts +1 -0
- package/lib/ast-helpers.js +11 -1
- package/lib/block-names.d.ts +4 -0
- package/lib/block-names.js +49 -0
- package/lib/exportHtml.js +38 -15
- package/lib/exportMarkdown.js +10 -0
- package/lib/grammar.js +2283 -851
- package/lib/grammarfc.js +419 -401
- package/lib/index.d.ts +3 -1
- package/lib/index.js +4 -2
- package/lib/pluggableParser.js +11 -2
- package/lib/plugin-items.js +23 -8
- package/lib/types.d.ts +17 -2
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
- package/schema/AstTree.json +108 -1
- package/schema/PodliteDocument.json +108 -1
package/esm/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ErrorObject } from 'ajv';
|
|
2
|
-
import { PodNode } from './types';
|
|
2
|
+
import { ParseDiagnostic, PodNode } from './types';
|
|
3
3
|
export { PodliteDocument } from './types';
|
|
4
4
|
export { AstTree } from './types';
|
|
5
5
|
export * from './types';
|
|
6
|
+
export * from './block-names';
|
|
6
7
|
export * from './blocks-helpers';
|
|
7
8
|
export * from './query-helpers';
|
|
8
9
|
export * from './ast-helpers';
|
|
@@ -68,6 +69,7 @@ export type parseOpt = {
|
|
|
68
69
|
skipChain?: number;
|
|
69
70
|
podMode?: number;
|
|
70
71
|
mode?: 'pod' | 'md';
|
|
72
|
+
diagnostics?: ParseDiagnostic[];
|
|
71
73
|
};
|
|
72
74
|
declare function makeTree(): {
|
|
73
75
|
(): void;
|
package/esm/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import Ajv from 'ajv';
|
|
2
2
|
import * as pointer from 'json-pointer';
|
|
3
|
+
import { BLOCK_NAMES } from './block-names';
|
|
3
4
|
import * as jsonShemes from '../schema';
|
|
4
5
|
import { makeInterator } from './ast-inerator';
|
|
5
6
|
export * from './types';
|
|
7
|
+
export * from './block-names';
|
|
6
8
|
export * from './blocks-helpers';
|
|
7
9
|
export * from './query-helpers';
|
|
8
10
|
export * from './ast-helpers';
|
|
@@ -125,8 +127,8 @@ function makeTree() {
|
|
|
125
127
|
return chain;
|
|
126
128
|
}
|
|
127
129
|
function parse(src, opt = { skipChain: 0, podMode: 1 }) {
|
|
128
|
-
const { skipChain = 0, podMode = 1 } = opt;
|
|
129
|
-
let tree = parser.parse(src, { podMode });
|
|
130
|
+
const { skipChain = 0, podMode = 1, diagnostics } = opt;
|
|
131
|
+
let tree = parser.parse(src, { podMode, diagnostics, blockNames: BLOCK_NAMES });
|
|
130
132
|
if (!skipChain) {
|
|
131
133
|
for (let i = 0; i < plugins.length; i++) {
|
|
132
134
|
const plugin = plugins[i];
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAoC,MAAM,KAAK,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAoC,MAAM,KAAK,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,KAAK,UAAU,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC1F,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,gBAAgB,EAA0B,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEjG,OAAO,KAAK,MAAM,MAAM,WAAW,CAAA;AACnC,OAAO,YAAY,MAAM,kBAAkB,CAAA;AAC3C,OAAO,oBAAoB,MAAM,2BAA2B,CAAA;AAC5D,OAAO,mBAAmB,MAAM,gBAAgB,CAAA;AAChD,OAAO,YAAY,MAAM,kBAAkB,CAAA;AAC3C,OAAO,cAAc,MAAM,qBAAqB,CAAA;AAChD,OAAO,eAAe,MAAM,sBAAsB,CAAA;AAClD,OAAO,cAAc,MAAM,yBAAyB,CAAA;AACpD,OAAO,QAAQ,MAAM,cAAc,CAAA;AACnC,OAAO,UAAU,MAAM,iBAAiB,CAAA;AACxC,OAAO,eAAe,MAAM,qBAAqB,CAAA;AAEjD,MAAM,UAAU,KAAK;IACnB,OAAO,EAAE,CAAA;AACX,CAAC;AAGD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;AAE5D,MAAM,UAAU,sBAAsB,CAAC,IAAa;IAClD,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,MAAM,KAAK,GAAG;QACZ,OAAO,EAAE,IAAI,CAAC,EAAE;YACd,IAAI,IAAI,IAAI,CAAC,KAAK,CAAA;QACpB,CAAC;QACD,WAAW,EAAE,IAAI,CAAC,EAAE;YAClB,IAAI,IAAI,IAAI,CAAC,KAAK,CAAA;QACpB,CAAC;KACF,CAAA;IACD,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACjC,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,MAAM,KAAK,GAAG;QACZ,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC9B,IAAI,IAAI,IAAI,CAAA;gBACZ,OAAM;YACR,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,IAAI,IAAI,CAAC,IAAI,CAAA;gBACjB,OAAM;YACR,CAAC;YAED,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAA;YACxB,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YAC5B,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAA;IACD,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACjC,OAAO,IAAI,CAAA;AACb,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC9C,OAAO,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;AAC7C,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,OAAe,SAAS;IACjE,MAAM,aAAa,GAA4B,UAAU,CAAC,IAAI,CAAC,CAAA;IAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,8BAA8B,IAAI,UAAU,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAU,aAAa,CAAC,CAAA;IACpD,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAA+B,EAAE,GAAQ;IACvE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,4BAA4B;QAC5B,IAAI,cAAc,GAAG,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC7B,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;YACpD,OAAO,GAAG,CAAA;QACZ,CAAC,CAAA;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;QACtD,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3F,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACtC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAqDD,SAAS,QAAQ;IACf,IAAI,OAAO,GAAwB,EAAE,CAAA;IACrC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAA;IACf,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;IACnB,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IACvB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACnB,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAC9B,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IACvB,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACzB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACrB,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC1B,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IAE/B,sCAAsC;IACtC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC1B,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACzB,OAAO,KAAK,CAAA;IAEZ,SAAS,KAAK;QACZ,OAAM;IACR,CAAC;IAED,SAAS,GAAG,CAAC,MAAoB;QAC/B,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC;YAC1C,MAAM,MAAM,CAAA;QACd,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,SAAS,KAAK,CAAC,GAAW,EAAE,MAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACtE,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,GAAG,CAAA;QACvD,IAAI,IAAI,GAAQ,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAA;QACpF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;gBACzB,OAAO;gBACP,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC3B,eAAe;gBACf,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,IAAI,MAAM,EAAE,CAAA;AAC7B,MAAM,KAAK,GAAa,QAAQ,EAAE,CAAC,KAAK,CAAA;AACxC,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,CAAA;AACzB,OAAO,EAAE,KAAK,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
|
package/esm/pluggableParser.js
CHANGED
|
@@ -22,9 +22,18 @@ export const podlitePluggable = ({ plugins = {} } = {}) => {
|
|
|
22
22
|
return instance;
|
|
23
23
|
};
|
|
24
24
|
instance.parse = (text, opt = { skipChain: 0, podMode: 1 }) => {
|
|
25
|
-
const
|
|
25
|
+
const diagnostics = opt.diagnostics || [];
|
|
26
|
+
const rawTree = toTree()
|
|
27
|
+
.use(idMiddleware)
|
|
28
|
+
.parse(text, { ...opt, diagnostics });
|
|
29
|
+
// one mistake inside a value reports twice: for the value and for the whole
|
|
30
|
+
// attribute around it. The narrower report names the place to fix
|
|
31
|
+
const innermost = diagnostics.filter(d => !diagnostics.some(other => other !== d &&
|
|
32
|
+
other.location.start.offset >= d.location.start.offset &&
|
|
33
|
+
other.location.end.offset <= d.location.end.offset));
|
|
34
|
+
diagnostics.splice(0, diagnostics.length, ...innermost);
|
|
26
35
|
const root = mkRootBlock({ margin: '' }, rawTree);
|
|
27
|
-
return root;
|
|
36
|
+
return diagnostics.length ? { ...root, diagnostics } : root;
|
|
28
37
|
};
|
|
29
38
|
instance.toAst = ast => {
|
|
30
39
|
return instance.toAstResult(ast).interator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluggableParser.js","sourceRoot":"","sources":["../src/pluggableParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,WAAW,EAAY,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,CAAA;AACtG,OAAO,UAAU,MAAM,kBAAkB,CAAA;AACzC,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,IAAI,MAAM,uBAAuB,CAAA;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AA0BnD,MAAM,CAAC,MAAM,gBAAgB,GAA8C,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;IACnG,IAAI,QAAQ,GAAY,cAAa,CAAC,CAAA;IACtC,IAAI,QAAQ,GAAc,EAAE,CAAA;IAE5B,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAY,EAAE,EAAE;QAC9B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAA;YACzB,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;YAC1C,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAA;IAED,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,MAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACtE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"pluggableParser.js","sourceRoot":"","sources":["../src/pluggableParser.ts"],"names":[],"mappings":"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"}
|
package/esm/plugin-items.js
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
// At this point the leading content element is still an unparsed text node;
|
|
2
|
+
// formatting codes are built from its value further down the pipeline. Cut the
|
|
3
|
+
// marker out of that value and leave the node in place — replacing the array
|
|
4
|
+
// with a plain string ends the chain early and drops every L<>, C<> and B< >
|
|
5
|
+
// written on the same line.
|
|
6
|
+
const stripMarker = (para, re) => {
|
|
7
|
+
para.text = para.text.replace(re, '');
|
|
8
|
+
if (para.type !== 'para')
|
|
9
|
+
return;
|
|
10
|
+
if (!Array.isArray(para.content)) {
|
|
11
|
+
para.content = [para.text];
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const first = para.content[0];
|
|
15
|
+
if (typeof first === 'string') {
|
|
16
|
+
para.content[0] = first.replace(re, '');
|
|
17
|
+
}
|
|
18
|
+
else if (first && typeof first.value === 'string') {
|
|
19
|
+
first.value = first.value.replace(re, '');
|
|
20
|
+
}
|
|
21
|
+
};
|
|
1
22
|
export default () => tree => {
|
|
2
23
|
const visit = node => {
|
|
3
24
|
if (Array.isArray(node)) {
|
|
@@ -25,10 +46,7 @@ export default () => tree => {
|
|
|
25
46
|
const checkboxMatch = checkboxRe.exec(startText.text);
|
|
26
47
|
if (checkboxMatch) {
|
|
27
48
|
node.checked = checkboxMatch[1] === 'x';
|
|
28
|
-
startText
|
|
29
|
-
if (startText.type === 'para') {
|
|
30
|
-
startText.content = [startText.text];
|
|
31
|
-
}
|
|
49
|
+
stripMarker(startText, checkboxRe);
|
|
32
50
|
node.config = node.config || [];
|
|
33
51
|
node.config.push({
|
|
34
52
|
name: 'checked',
|
|
@@ -40,10 +58,7 @@ export default () => tree => {
|
|
|
40
58
|
let re = /^(\s*#\s*)/;
|
|
41
59
|
const match = re.exec(startText.text);
|
|
42
60
|
if (match) {
|
|
43
|
-
startText
|
|
44
|
-
if (startText.type === 'para') {
|
|
45
|
-
startText.content = [startText.text];
|
|
46
|
-
}
|
|
61
|
+
stripMarker(startText, re);
|
|
47
62
|
node.config = node.config || [];
|
|
48
63
|
node.config.push({
|
|
49
64
|
name: 'numbered',
|
package/esm/plugin-items.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-items.js","sourceRoot":"","sources":["../src/plugin-items.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE;QACnB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACf,KAAK,CAAC,CAAC,CAAC,CAAA;YACV,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC/C,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,CAAC,IAAI,GAAG,MAAM,CAAA;oBAClB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;oBAE9B,8CAA8C;oBAC9C,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;oBACzE,IAAI,aAAa,EAAE,CAAC;wBAClB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,KAAK,KAAK,IAAI,aAAa,CAAC,KAAK,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,KAAK,GAAG,CAAA;oBAC1G,CAAC;oBAED,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;wBACjC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;4BACnB,wDAAwD;4BACxD,IAAI,CAAC,aAAa,EAAE,CAAC;gCACnB,MAAM,UAAU,GAAG,eAAe,CAAA;gCAClC,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gCACrD,IAAI,aAAa,EAAE,CAAC;oCAClB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,CAAA;oCACvC,
|
|
1
|
+
{"version":3,"file":"plugin-items.js","sourceRoot":"","sources":["../src/plugin-items.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,4BAA4B;AAC5B,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;IAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAM;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAM;IACR,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACzC,CAAC;SAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC,CAAA;AAED,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE;QACnB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACf,KAAK,CAAC,CAAC,CAAC,CAAA;YACV,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC/C,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,CAAC,IAAI,GAAG,MAAM,CAAA;oBAClB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;oBAE9B,8CAA8C;oBAC9C,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;oBACzE,IAAI,aAAa,EAAE,CAAC;wBAClB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,KAAK,KAAK,IAAI,aAAa,CAAC,KAAK,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,KAAK,GAAG,CAAA;oBAC1G,CAAC;oBAED,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;wBACjC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;4BACnB,wDAAwD;4BACxD,IAAI,CAAC,aAAa,EAAE,CAAC;gCACnB,MAAM,UAAU,GAAG,eAAe,CAAA;gCAClC,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gCACrD,IAAI,aAAa,EAAE,CAAC;oCAClB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,CAAA;oCACvC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;oCAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA;oCAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;wCACf,IAAI,EAAE,SAAS;wCACf,KAAK,EAAE,IAAI,CAAC,OAAO;wCACnB,IAAI,EAAE,SAAS;qCAChB,CAAC,CAAA;gCACJ,CAAC;4BACH,CAAC;4BAED,IAAI,EAAE,GAAG,YAAY,CAAA;4BACrB,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;4BACrC,IAAI,KAAK,EAAE,CAAC;gCACV,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;gCAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA;gCAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oCACf,IAAI,EAAE,UAAU;oCAChB,KAAK,EAAE,IAAI;oCACX,IAAI,EAAE,SAAS;iCAChB,CAAC,CAAA;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACrB,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,CAAA;IACX,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
package/esm/types.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ export interface RulesStrict {
|
|
|
35
35
|
'X<>': RuleHandler<FormattingCodeX>;
|
|
36
36
|
'S<>': RuleHandler<FormattingCodeS>;
|
|
37
37
|
'L<>': RuleHandler<FormattingCodeL>;
|
|
38
|
+
'W<>': RuleHandler<FormattingCodeW>;
|
|
38
39
|
'U<>': RuleHandler<FormattingCodeAny>;
|
|
39
40
|
'Z<>': RuleHandler<FormattingCodeAny>;
|
|
40
41
|
'O<>': RuleHandler<FormattingCodeAny>;
|
|
@@ -134,6 +135,13 @@ export interface BlockCaption extends Omit<Block, 'content' | 'location' | 'marg
|
|
|
134
135
|
export interface RootBlock extends Omit<Block, 'location'> {
|
|
135
136
|
name: 'root';
|
|
136
137
|
content: AstTree;
|
|
138
|
+
diagnostics?: Array<ParseDiagnostic>;
|
|
139
|
+
}
|
|
140
|
+
export interface ParseDiagnostic {
|
|
141
|
+
severity: 'warning';
|
|
142
|
+
code: 'value-unreadable' | 'directive-unreadable';
|
|
143
|
+
message: string;
|
|
144
|
+
location: Location;
|
|
137
145
|
}
|
|
138
146
|
export interface FormattingCodeB {
|
|
139
147
|
type: 'fcode';
|
|
@@ -210,6 +218,12 @@ export interface FormattingCodeL {
|
|
|
210
218
|
meta: string | null;
|
|
211
219
|
content: string | Text | [Text];
|
|
212
220
|
}
|
|
221
|
+
export interface FormattingCodeW {
|
|
222
|
+
type: 'fcode';
|
|
223
|
+
name: 'W';
|
|
224
|
+
meta: string | null;
|
|
225
|
+
content: string | Text | [Text];
|
|
226
|
+
}
|
|
213
227
|
export interface FormattingCodeI {
|
|
214
228
|
type: 'fcode';
|
|
215
229
|
name: 'I';
|
|
@@ -262,10 +276,11 @@ export interface ConfigItemKV {
|
|
|
262
276
|
}
|
|
263
277
|
export interface BrokenConfigItem extends Omit<ConfigItem, 'type'> {
|
|
264
278
|
}
|
|
279
|
+
export type ConfigItemType = 'boolean' | 'number' | 'string' | 'array' | 'map';
|
|
265
280
|
export interface ConfigItem {
|
|
266
281
|
name: string;
|
|
267
282
|
value: boolean | string | number | Array<string | number | boolean> | ConfigItemKV;
|
|
268
|
-
type:
|
|
283
|
+
type: ConfigItemType;
|
|
269
284
|
isFalse?: boolean;
|
|
270
285
|
}
|
|
271
286
|
export interface BlockConfig {
|
|
@@ -386,7 +401,7 @@ export interface BlockFormula extends Omit<BlockNamed, 'content'> {
|
|
|
386
401
|
name: 'formula';
|
|
387
402
|
content: [Verbatim];
|
|
388
403
|
}
|
|
389
|
-
export type FormattingCodes = FormattingCodeA | FormattingCodeC | FormattingCodeB | FormattingCodeD | FormattingCodeE | FormattingCodeF | FormattingCodeI | FormattingCodeL | FormattingCodeN | FormattingCodeX | FormattingCodeZ | FormattingCodeV | FormattingCodeS | FormattingCodeAny;
|
|
404
|
+
export type FormattingCodes = FormattingCodeA | FormattingCodeC | FormattingCodeB | FormattingCodeD | FormattingCodeE | FormattingCodeF | FormattingCodeI | FormattingCodeL | FormattingCodeW | FormattingCodeN | FormattingCodeX | FormattingCodeZ | FormattingCodeV | FormattingCodeS | FormattingCodeAny;
|
|
390
405
|
export type PodNode = Ambient | BlockPod | BlockData | BlockFormula | BlockCode | BlankLine | BlockNested | BlockMarkdown | BlockOutput | BlockInput | BlockInclude | BlockPara | BlockHead | BlockComment | BlockDefn | string | Para | Text | Code | BlockNamed | BlockAny | Verbatim | BlockTable | List | BlockConfig | BlockItem | Alias | BlockToc | BlockPicture | BlockImage | Image | RootBlock | Separator | BlockCaption | FormattingCodes | Toc;
|
|
391
406
|
export type Node = PodNode;
|
|
392
407
|
export type AstTree = Array<PodNode>;
|
package/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "0.0.
|
|
1
|
+
export declare const version = "0.0.57";
|
package/esm/version.js
CHANGED
package/lib/ast-helpers.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Node } from './types';
|
|
2
2
|
export declare const getNodeId: (node: any, ctx: any) => any;
|
|
3
3
|
export declare const getSafeNodeId: (node: Node, ctx: any) => string | null;
|
|
4
|
+
export declare const getExplicitNodeId: (node: any, ctx: any) => string | null;
|
|
4
5
|
export declare const makeAttrs: (node: any, ctx?: import("./helpers/config").Context) => import("./helpers/config").Attr;
|
package/lib/ast-helpers.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.makeAttrs = exports.getSafeNodeId = exports.getNodeId = void 0;
|
|
6
|
+
exports.makeAttrs = exports.getExplicitNodeId = exports.getSafeNodeId = exports.getNodeId = void 0;
|
|
7
7
|
const config_1 = __importDefault(require("./helpers/config"));
|
|
8
8
|
const getNodeId = (node, ctx) => {
|
|
9
9
|
const conf = (0, config_1.default)(node, ctx);
|
|
@@ -15,5 +15,15 @@ const getNodeId = (node, ctx) => {
|
|
|
15
15
|
exports.getNodeId = getNodeId;
|
|
16
16
|
const getSafeNodeId = (node, ctx) => (0, exports.getNodeId)(node, ctx)?.toString().replace(/\s/g, '-');
|
|
17
17
|
exports.getSafeNodeId = getSafeNodeId;
|
|
18
|
+
// Only the author-written :id. The generated node.id changes on every parse, so
|
|
19
|
+
// emitting it as an html anchor would produce targets no link can rely on.
|
|
20
|
+
const getExplicitNodeId = (node, ctx) => {
|
|
21
|
+
const conf = (0, config_1.default)(node, ctx);
|
|
22
|
+
if (!conf.exists('id'))
|
|
23
|
+
return null;
|
|
24
|
+
const id = conf.getFirstValue('id');
|
|
25
|
+
return id == null ? null : id.toString().replace(/\s/g, '-');
|
|
26
|
+
};
|
|
27
|
+
exports.getExplicitNodeId = getExplicitNodeId;
|
|
18
28
|
exports.makeAttrs = config_1.default;
|
|
19
29
|
//# sourceMappingURL=ast-helpers.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const BLOCK_NAMES: readonly ["boundary", "cell", "code", "comment", "data", "data-table", "defn", "formula", "head", "include", "input", "item", "markdown", "nested", "output", "para", "picture", "pod", "row", "set", "table", "toc"];
|
|
2
|
+
export declare const VERBATIM_BLOCKS: readonly ["code", "comment", "data", "data-table", "formula", "input", "markdown", "output", "picture", "table"];
|
|
3
|
+
export declare const isVerbatimBlock: (name: string) => boolean;
|
|
4
|
+
export declare const isKnownBlockName: (name: string) => boolean;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isKnownBlockName = exports.isVerbatimBlock = exports.VERBATIM_BLOCKS = exports.BLOCK_NAMES = void 0;
|
|
4
|
+
// Names the parser treats as blocks. Kept here so the parser, the linter and the
|
|
5
|
+
// editor read one list instead of each carrying a copy.
|
|
6
|
+
exports.BLOCK_NAMES = [
|
|
7
|
+
'boundary',
|
|
8
|
+
'cell',
|
|
9
|
+
'code',
|
|
10
|
+
'comment',
|
|
11
|
+
'data',
|
|
12
|
+
'data-table',
|
|
13
|
+
'defn',
|
|
14
|
+
'formula',
|
|
15
|
+
'head',
|
|
16
|
+
'include',
|
|
17
|
+
'input',
|
|
18
|
+
'item',
|
|
19
|
+
'markdown',
|
|
20
|
+
'nested',
|
|
21
|
+
'output',
|
|
22
|
+
'para',
|
|
23
|
+
'picture',
|
|
24
|
+
'pod',
|
|
25
|
+
'row',
|
|
26
|
+
'set',
|
|
27
|
+
'table',
|
|
28
|
+
'toc',
|
|
29
|
+
];
|
|
30
|
+
// Blocks whose content is taken as written, so nothing inside them is markup.
|
|
31
|
+
// The formatting-codes plugin keeps a narrower list of its own — the two answer
|
|
32
|
+
// different questions and are reconciled separately.
|
|
33
|
+
exports.VERBATIM_BLOCKS = [
|
|
34
|
+
'code',
|
|
35
|
+
'comment',
|
|
36
|
+
'data',
|
|
37
|
+
'data-table',
|
|
38
|
+
'formula',
|
|
39
|
+
'input',
|
|
40
|
+
'markdown',
|
|
41
|
+
'output',
|
|
42
|
+
'picture',
|
|
43
|
+
'table',
|
|
44
|
+
];
|
|
45
|
+
const isVerbatimBlock = (name) => exports.VERBATIM_BLOCKS.includes(name);
|
|
46
|
+
exports.isVerbatimBlock = isVerbatimBlock;
|
|
47
|
+
const isKnownBlockName = (name) => exports.BLOCK_NAMES.includes(name);
|
|
48
|
+
exports.isKnownBlockName = isKnownBlockName;
|
|
49
|
+
//# sourceMappingURL=block-names.js.map
|
package/lib/exportHtml.js
CHANGED
|
@@ -12,6 +12,10 @@ const writerHtml_1 = __importDefault(require("./writerHtml"));
|
|
|
12
12
|
const plugin_clean_location_1 = __importDefault(require("./plugin-clean-location"));
|
|
13
13
|
const ast_helpers_1 = require("./ast-helpers");
|
|
14
14
|
const entities_1 = require("entities");
|
|
15
|
+
const openTag = (tag, node, ctx, attrs = '') => {
|
|
16
|
+
const id = (0, ast_helpers_1.getExplicitNodeId)(node, ctx);
|
|
17
|
+
return `<${tag}${id ? ` id="${id}"` : ''}${attrs}>`;
|
|
18
|
+
};
|
|
15
19
|
const rules = {
|
|
16
20
|
':text': (writer, processor) => (node, ctx, interator) => {
|
|
17
21
|
// handle text with content
|
|
@@ -97,6 +101,13 @@ const rules = {
|
|
|
97
101
|
}
|
|
98
102
|
return (0, handlers_1.wrapContent)(`<a href="${meta}">`, `</a>`);
|
|
99
103
|
}),
|
|
104
|
+
'W<>': (0, handlers_1.setFn)((node, ctx) => {
|
|
105
|
+
let { meta } = node;
|
|
106
|
+
if (meta === null) {
|
|
107
|
+
meta = node.content;
|
|
108
|
+
}
|
|
109
|
+
return (0, handlers_1.wrapContent)(`<a href="${meta}" class="backlink">`, `</a>`);
|
|
110
|
+
}),
|
|
100
111
|
/**
|
|
101
112
|
* CSS rules for footnotes
|
|
102
113
|
|
|
@@ -181,7 +192,7 @@ const rules = {
|
|
|
181
192
|
'Z<>': handlers_1.emptyContent,
|
|
182
193
|
pod: handlers_1.content,
|
|
183
194
|
':code': (0, handlers_1.wrapContent)('<pre><code>', '</code></pre>'),
|
|
184
|
-
code: (0, handlers_1.handleNested)((0, handlers_1.wrapContent)('
|
|
195
|
+
code: (0, handlers_1.handleNested)((0, handlers_1.setFn)((node, ctx) => (0, handlers_1.wrapContent)(`${openTag('pre', node, ctx)}<code>`, '</code></pre>'))),
|
|
185
196
|
data: handlers_1.emptyContent,
|
|
186
197
|
':verbatim': (writer, processor) => (node, ctx, interator) => {
|
|
187
198
|
if (node.error) {
|
|
@@ -213,8 +224,12 @@ const rules = {
|
|
|
213
224
|
return handlers_1.emptyContent;
|
|
214
225
|
}),
|
|
215
226
|
// block =para
|
|
216
|
-
|
|
217
|
-
|
|
227
|
+
// With an :id the block owns the <p> so the anchor lands on it; without one
|
|
228
|
+
// the inner paragraph renders as before.
|
|
229
|
+
para: (0, handlers_1.handleNested)((0, handlers_1.setFn)((node, ctx) => (0, ast_helpers_1.getExplicitNodeId)(node, ctx)
|
|
230
|
+
? (0, handlers_1.subUse)({ ':para': handlers_1.content }, (0, handlers_1.wrapContent)(openTag('p', node, ctx), '</p>'))
|
|
231
|
+
: handlers_1.content)),
|
|
232
|
+
':para': (0, handlers_1.setFn)((node, ctx) => (0, handlers_1.wrapContent)(openTag('p', node, ctx), '</p>')),
|
|
218
233
|
'head:block': (0, handlers_1.subUse)({
|
|
219
234
|
// inside head don't wrap into <p>
|
|
220
235
|
':para': handlers_1.content,
|
|
@@ -225,12 +240,12 @@ const rules = {
|
|
|
225
240
|
return (0, handlers_1.wrapContent)(open, `</h${level}>`);
|
|
226
241
|
})),
|
|
227
242
|
':list': (0, handlers_1.setFn)((node, ctx) => node.list === 'ordered'
|
|
228
|
-
? (0, handlers_1.wrapContent)('
|
|
243
|
+
? (0, handlers_1.wrapContent)(openTag('ol', node, ctx), '</ol>')
|
|
229
244
|
: node.list === 'variable'
|
|
230
|
-
? (0, handlers_1.wrapContent)('
|
|
245
|
+
? (0, handlers_1.wrapContent)(openTag('dl', node, ctx), '</dl>')
|
|
231
246
|
: node.list === 'task'
|
|
232
|
-
? (0, handlers_1.wrapContent)('
|
|
233
|
-
: (0, handlers_1.wrapContent)('
|
|
247
|
+
? (0, handlers_1.wrapContent)(openTag('ul', node, ctx, ' class="task-list"'), '</ul>')
|
|
248
|
+
: (0, handlers_1.wrapContent)(openTag('ul', node, ctx), '</ul>')),
|
|
234
249
|
'item:block': (writer, processor) => (node, ctx, interator) => {
|
|
235
250
|
// make text from first para
|
|
236
251
|
if (!(node.content instanceof Array)) {
|
|
@@ -238,11 +253,11 @@ const rules = {
|
|
|
238
253
|
}
|
|
239
254
|
const isTask = node.checked !== undefined;
|
|
240
255
|
if (isTask) {
|
|
241
|
-
writer.writeRaw('
|
|
256
|
+
writer.writeRaw(openTag('li', node, ctx, ' class="task-list-item"'));
|
|
242
257
|
writer.writeRaw(node.checked ? '<input type="checkbox" disabled checked> ' : '<input type="checkbox" disabled> ');
|
|
243
258
|
}
|
|
244
259
|
else {
|
|
245
|
-
writer.writeRaw('
|
|
260
|
+
writer.writeRaw(openTag('li', node, ctx));
|
|
246
261
|
}
|
|
247
262
|
interator(node.content, ctx);
|
|
248
263
|
writer.writeRaw('</li>');
|
|
@@ -250,24 +265,32 @@ const rules = {
|
|
|
250
265
|
'comment:block': handlers_1.emptyContent,
|
|
251
266
|
'boundary:block': (writer, processor) => (node, ctx) => {
|
|
252
267
|
const conf = (0, config_1.default)(node, ctx);
|
|
268
|
+
const id = (0, ast_helpers_1.getExplicitNodeId)(node, ctx);
|
|
269
|
+
const idAttr = id ? ` id="${id}"` : '';
|
|
253
270
|
if (conf.exists('caption')) {
|
|
254
|
-
writer.writeRaw(
|
|
271
|
+
writer.writeRaw(`<hr${idAttr} title="`);
|
|
255
272
|
writer.write(conf.getFirstValue('caption'));
|
|
256
273
|
writer.writeRaw('">');
|
|
257
274
|
}
|
|
258
275
|
else {
|
|
259
|
-
writer.writeRaw(
|
|
276
|
+
writer.writeRaw(`<hr${idAttr}>`);
|
|
260
277
|
}
|
|
261
278
|
},
|
|
262
|
-
|
|
279
|
+
// The term opens the pair, so an :id on the definition lands on its <dt>.
|
|
280
|
+
defn: (0, handlers_1.setFn)((node, ctx) => {
|
|
281
|
+
const id = (0, ast_helpers_1.getExplicitNodeId)(node, ctx);
|
|
282
|
+
return id
|
|
283
|
+
? (0, handlers_1.subUse)({ 'term:para': (0, handlers_1.wrapContent)(`<dt id="${id}">`, '</dt><dd>') }, (0, handlers_1.wrapContent)('', '</dd>'))
|
|
284
|
+
: (0, handlers_1.wrapContent)('', '</dd>');
|
|
285
|
+
}),
|
|
263
286
|
'term:para': (0, handlers_1.wrapContent)('<dt>', '</dt><dd>'),
|
|
264
287
|
nested: (0, handlers_1.handleNested)(handlers_1.content, 1),
|
|
265
|
-
output: (0, handlers_1.handleNested)((0, handlers_1.wrapContent)('
|
|
266
|
-
input: (0, handlers_1.handleNested)((0, handlers_1.wrapContent)('
|
|
288
|
+
output: (0, handlers_1.handleNested)((0, handlers_1.setFn)((node, ctx) => (0, handlers_1.wrapContent)(`${openTag('pre', node, ctx)}<samp>`, '</samp></pre>')), 1),
|
|
289
|
+
input: (0, handlers_1.handleNested)((0, handlers_1.setFn)((node, ctx) => (0, handlers_1.wrapContent)(`${openTag('pre', node, ctx)}<kbd>`, '</kbd></pre>')), 1),
|
|
267
290
|
// table section
|
|
268
291
|
'table:block': (0, handlers_1.handleNested)((writer, processor) => (node, ctx, interator) => {
|
|
269
292
|
const conf = (0, config_1.default)(node, ctx);
|
|
270
|
-
writer.writeRaw('
|
|
293
|
+
writer.writeRaw(openTag('table', node, ctx));
|
|
271
294
|
if (conf.exists('caption')) {
|
|
272
295
|
writer.writeRaw('<caption>');
|
|
273
296
|
writer.write(conf.getFirstValue('caption'));
|
package/lib/exportMarkdown.js
CHANGED
|
@@ -66,6 +66,13 @@ const rules = {
|
|
|
66
66
|
}
|
|
67
67
|
return (0, handlers_1.wrapContent)(`[`, `](${meta})`);
|
|
68
68
|
}),
|
|
69
|
+
'W<>': (0, handlers_1.setFn)((node, ctx) => {
|
|
70
|
+
let { meta } = node;
|
|
71
|
+
if (meta === null) {
|
|
72
|
+
meta = node.content;
|
|
73
|
+
}
|
|
74
|
+
return (0, handlers_1.wrapContent)(`[`, `](${meta})`);
|
|
75
|
+
}),
|
|
69
76
|
'N<>': (writer, processor) => {
|
|
70
77
|
writer.addListener('end', () => {
|
|
71
78
|
if (!writer.hasOwnProperty('FOOTNOTES')) {
|
|
@@ -241,6 +248,9 @@ const rules = {
|
|
|
241
248
|
else {
|
|
242
249
|
prefix = '- ';
|
|
243
250
|
}
|
|
251
|
+
if (node.checked !== undefined) {
|
|
252
|
+
prefix += node.checked ? '[x] ' : '[ ] ';
|
|
253
|
+
}
|
|
244
254
|
writer.writeRaw(indent + prefix);
|
|
245
255
|
if (node.content)
|
|
246
256
|
interator(node.content, ctx);
|