@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/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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -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 rawTree = toTree().use(idMiddleware).parse(text, opt);
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,YAAY,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;QACjD,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE;QACrB,OAAwB,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAA;IAC7D,CAAC,CAAA;IAED,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE;QAC3B,uBAAuB;QACvB,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAkB,KAAK,EAAE;aAClC,GAAG,CAAC;YACH,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;gBAClC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;gBAC7C,CAAC;gBACD,OAAO,IAAI,CAAA;YACb,CAAC;SACF,CAAC;aACD,GAAG,CAAC,YAAY,CAAC;aACjB,GAAG,CAAC,GAAG,CAAC,CAAA;QACX,kBAAkB;QAClB,MAAM,iBAAiB,GAAG,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;QACzE,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAkB,KAAK,EAAE;iBACvC,GAAG,CAAC;gBACH,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;oBAClC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;wBACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;oBAC7C,CAAC;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC;aACF,CAAC;iBACD,GAAG,CAAC,iBAAiB,CAAC;iBACtB,GAAG,CAAC,GAAG,CAAC,CAAA;YACX,IAAI,WAAW,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;gBACzC,uBAAuB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;gBAC9C,mBAAmB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;gBAC1C,yBAAyB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YAClD,CAAC;YACD,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAC/B,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACzC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACrC,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC7C,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;QACtB,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;QACjE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACrD,CAAC,CAAA;IAED,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE;QAC1B,MAAM,iBAAiB,GAAG,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;QACzE,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7D,CAAC,CAAA;IAED,QAAQ,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAA;IAEpC,oBAAoB;IACpB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAClB,wBAAwB;IACxB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
1
+ {"version":3,"file":"pluggableParser.js","sourceRoot":"","sources":["../src/pluggableParser.ts"],"names":[],"mappings":"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"}
@@ -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.text = startText.text.replace(checkboxRe, '');
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.text = startText.text.replace(re, '');
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',
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-items.js","sourceRoot":"","sources":["../src/plugin-items.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-items.js","sourceRoot":"","sources":["../src/plugin-items.ts"],"names":[],"mappings":"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"}
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: string;
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.55";
1
+ export declare const version = "0.0.57";
package/esm/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // generated by scripts/inject-version.mjs — do not edit by hand
2
- export const version = '0.0.55';
2
+ export const version = '0.0.57';
3
3
  //# sourceMappingURL=version.js.map
@@ -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;
@@ -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)('<pre><code>', '</code></pre>')),
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
- para: (0, handlers_1.handleNested)(handlers_1.content),
217
- ':para': (0, handlers_1.wrapContent)('<p>', '</p>'),
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)('<ol>', '</ol>')
243
+ ? (0, handlers_1.wrapContent)(openTag('ol', node, ctx), '</ol>')
229
244
  : node.list === 'variable'
230
- ? (0, handlers_1.wrapContent)('<dl>', '</dl>')
245
+ ? (0, handlers_1.wrapContent)(openTag('dl', node, ctx), '</dl>')
231
246
  : node.list === 'task'
232
- ? (0, handlers_1.wrapContent)('<ul class="task-list">', '</ul>')
233
- : (0, handlers_1.wrapContent)('<ul>', '</ul>')),
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('<li class="task-list-item">');
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('<li>');
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('<hr title="');
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('<hr>');
276
+ writer.writeRaw(`<hr${idAttr}>`);
260
277
  }
261
278
  },
262
- defn: (0, handlers_1.wrapContent)('', '</dd>'),
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)('<pre><samp>', '</samp></pre>'), 1),
266
- input: (0, handlers_1.handleNested)((0, handlers_1.wrapContent)('<pre><kbd>', '</kbd></pre>'), 1),
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('<table>');
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'));
@@ -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);