@podlite/schema 0.0.65 → 0.0.67

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.
Files changed (60) hide show
  1. package/CHANGELOG.podlite +28 -0
  2. package/esm/block-names.d.ts +1 -0
  3. package/esm/block-names.js +6 -1
  4. package/esm/block-names.js.map +1 -1
  5. package/esm/blocks-helpers.d.ts +1 -1
  6. package/esm/blocks-helpers.js +2 -1
  7. package/esm/blocks-helpers.js.map +1 -1
  8. package/esm/exportHtml.js +10 -5
  9. package/esm/exportHtml.js.map +1 -1
  10. package/esm/exportMarkdown.js +58 -26
  11. package/esm/exportMarkdown.js.map +1 -1
  12. package/esm/grammarfc.js +7794 -6355
  13. package/esm/grammarfc.js.map +1 -1
  14. package/esm/guard.d.ts +5 -0
  15. package/esm/guard.js +39 -0
  16. package/esm/guard.js.map +1 -0
  17. package/esm/index.d.ts +2 -1
  18. package/esm/index.js +2 -1
  19. package/esm/index.js.map +1 -1
  20. package/esm/pluggableParser.js +3 -0
  21. package/esm/pluggableParser.js.map +1 -1
  22. package/esm/plugin-data-table.d.ts +1 -1
  23. package/esm/plugin-data-table.js +13 -11
  24. package/esm/plugin-data-table.js.map +1 -1
  25. package/esm/plugin-formatting-codes.js +49 -13
  26. package/esm/plugin-formatting-codes.js.map +1 -1
  27. package/esm/plugin-tables.d.ts +4 -2
  28. package/esm/plugin-tables.js +64 -17
  29. package/esm/plugin-tables.js.map +1 -1
  30. package/esm/selectors.d.ts +1 -0
  31. package/esm/selectors.js +42 -19
  32. package/esm/selectors.js.map +1 -1
  33. package/esm/types.d.ts +6 -2
  34. package/esm/version.d.ts +1 -1
  35. package/esm/version.js +1 -1
  36. package/lib/block-names.d.ts +1 -0
  37. package/lib/block-names.js +8 -2
  38. package/lib/blocks-helpers.d.ts +1 -1
  39. package/lib/blocks-helpers.js +2 -1
  40. package/lib/exportHtml.js +10 -5
  41. package/lib/exportMarkdown.js +58 -26
  42. package/lib/grammarfc.js +7794 -6355
  43. package/lib/guard.d.ts +5 -0
  44. package/lib/guard.js +47 -0
  45. package/lib/index.d.ts +2 -1
  46. package/lib/index.js +5 -1
  47. package/lib/pluggableParser.js +3 -0
  48. package/lib/plugin-data-table.d.ts +1 -1
  49. package/lib/plugin-data-table.js +12 -10
  50. package/lib/plugin-formatting-codes.js +49 -13
  51. package/lib/plugin-tables.d.ts +4 -2
  52. package/lib/plugin-tables.js +65 -17
  53. package/lib/selectors.d.ts +1 -0
  54. package/lib/selectors.js +44 -20
  55. package/lib/types.d.ts +6 -2
  56. package/lib/version.d.ts +1 -1
  57. package/lib/version.js +1 -1
  58. package/package.json +1 -1
  59. package/schema/AstTree.json +77 -1
  60. package/schema/PodliteDocument.json +77 -1
package/esm/guard.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export declare const isCovered: (node: unknown, ctx?: {
2
+ maskMode?: boolean;
3
+ renderMode?: string;
4
+ }) => boolean;
5
+ export declare const markGuarded: <T>(node: T, inherited?: boolean) => T;
package/esm/guard.js ADDED
@@ -0,0 +1,39 @@
1
+ import makeAttrs from './helpers/config';
2
+ // Covered content is marked on the node, not decided at render time. A block
3
+ // carrying :masked or a G<> code can be lifted out of its document by =include,
4
+ // by a data: reference, by an alias expansion or by a selector; the mark travels
5
+ // with the node, so whatever pulls the node out cannot strip the cover off it.
6
+ const GUARD_CODE = 'G';
7
+ const isGuardCode = (node) => node.type === 'fcode' && node.name === GUARD_CODE;
8
+ const isMaskedBlock = (node) => {
9
+ if (node.type !== 'block')
10
+ return false;
11
+ const conf = makeAttrs(node, {});
12
+ return conf.exists('masked') && Boolean(conf.getFirstValue('masked'));
13
+ };
14
+ // The mark says the content is covered; the render mode says whether the cover
15
+ // is applied. Draft shows what production hides, and the mark alone must not
16
+ // override that.
17
+ export const isCovered = (node, ctx) => {
18
+ if (ctx?.maskMode)
19
+ return true;
20
+ if (ctx?.renderMode === 'draft')
21
+ return false;
22
+ return Boolean(node?.guarded);
23
+ };
24
+ export const markGuarded = (node, inherited = false) => {
25
+ if (!node || typeof node !== 'object')
26
+ return node;
27
+ if (Array.isArray(node)) {
28
+ node.forEach(child => markGuarded(child, inherited));
29
+ return node;
30
+ }
31
+ const target = node;
32
+ const covered = inherited || target.guarded === true || isGuardCode(target) || isMaskedBlock(target);
33
+ if (covered)
34
+ target.guarded = true;
35
+ if (Array.isArray(target.content))
36
+ target.content.forEach(child => markGuarded(child, covered));
37
+ return node;
38
+ };
39
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAA;AAExC,6EAA6E;AAC7E,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,MAAM,UAAU,GAAG,GAAG,CAAA;AAEtB,MAAM,WAAW,GAAG,CAAC,IAAsC,EAAW,EAAE,CACtE,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAA;AAEnD,MAAM,aAAa,GAAG,CAAC,IAAuB,EAAW,EAAE;IACzD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAa,EAAE,EAAE,CAAC,CAAA;IACzC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;AACvE,CAAC,CAAA;AAED,+EAA+E;AAC/E,6EAA6E;AAC7E,iBAAiB;AACjB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,GAAiD,EAAW,EAAE;IACrG,IAAI,GAAG,EAAE,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC9B,IAAI,GAAG,EAAE,UAAU,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IAC7C,OAAO,OAAO,CAAE,IAA8B,EAAE,OAAO,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAI,IAAO,EAAE,SAAS,GAAG,KAAK,EAAK,EAAE;IAC9D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAClD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,MAAM,GAAG,IAA8E,CAAA;IAC7F,MAAM,OAAO,GAAG,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;IACpG,IAAI,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/F,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
package/esm/index.d.ts CHANGED
@@ -87,7 +87,8 @@ export declare const parseFormattingCodes: (text: string, options?: {
87
87
  export { default as toHtml } from './exportHtml';
88
88
  export { default as toMarkdown } from './exportMarkdown';
89
89
  export { default as Writer } from './writer';
90
- export { parseSelector, runSelector } from './selectors';
90
+ export { parseSelector, runSelector, filePathMatches } from './selectors';
91
+ export { markGuarded, isCovered } from './guard';
91
92
  export type { SelectorDoc, ParsedSelector } from './selectors';
92
93
  export { applyImageBase } from './image-base';
93
94
  export { version } from './version';
package/esm/index.js CHANGED
@@ -156,7 +156,8 @@ export const parseFormattingCodes = (text, options = {}) => parseFcodes(text, {
156
156
  export { default as toHtml } from './exportHtml';
157
157
  export { default as toMarkdown } from './exportMarkdown';
158
158
  export { default as Writer } from './writer';
159
- export { parseSelector, runSelector } from './selectors';
159
+ export { parseSelector, runSelector, filePathMatches } from './selectors';
160
+ export { markGuarded, isCovered } from './guard';
160
161
  export { applyImageBase } from './image-base';
161
162
  export { version } from './version';
162
163
  //# sourceMappingURL=index.js.map
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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"}
@@ -5,6 +5,7 @@ import core from './helpers/corePlugins';
5
5
  import { propagateConfigDefaults } from './helpers/configPropagation';
6
6
  import { attachHeadingNumberPrefix } from './helpers/headingNumbering';
7
7
  import { promoteOrderedLists } from './helpers/itemNumbering';
8
+ import { markGuarded } from './guard';
8
9
  export { cleanIds, frozenIds } from './helpers/ids';
9
10
  export const podlitePluggable = ({ plugins = {} } = {}) => {
10
11
  let instance = function () { };
@@ -70,6 +71,7 @@ export const podlitePluggable = ({ plugins = {} } = {}) => {
70
71
  propagateConfigDefaults(resultAfter.interator);
71
72
  promoteOrderedLists(resultAfter.interator);
72
73
  attachHeadingNumberPrefix(resultAfter.interator);
74
+ markGuarded(resultAfter.interator);
73
75
  }
74
76
  return resultAfter;
75
77
  }
@@ -77,6 +79,7 @@ export const podlitePluggable = ({ plugins = {} } = {}) => {
77
79
  propagateConfigDefaults(result.interator);
78
80
  promoteOrderedLists(result.interator);
79
81
  attachHeadingNumberPrefix(result.interator);
82
+ markGuarded(result.interator);
80
83
  }
81
84
  return result;
82
85
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pluggableParser.js","sourceRoot":"","sources":["../src/pluggableParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pluggableParser.js","sourceRoot":"","sources":["../src/pluggableParser.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- declare const _default: () => (tree: any) => any;
1
+ declare const _default: (opt?: {}) => (tree: any) => any;
2
2
  export default _default;
@@ -1,6 +1,6 @@
1
1
  import makeTransformer from './helpers/makeTransformer';
2
2
  import makeAttrs from './helpers/config';
3
- import { parseCsv, parseTsv, parseMimeType, findDataBlockByKey, extractDataText, csvToTableContent, normalizeCellCounts, } from './plugin-tables';
3
+ import { parseCsv, parseTsv, parseMimeType, findDataBlockByKey, extractDataText, csvToTableContent, normalizeCellCounts, makeTableReport, } from './plugin-tables';
4
4
  const extensionMimeMap = {
5
5
  csv: 'text/csv; header=present',
6
6
  tsv: 'text/tab-separated-values; header=present',
@@ -38,7 +38,8 @@ function resolveColumnIndex(col, headerRow, maxCols) {
38
38
  }
39
39
  const idx = headerRow.indexOf(col);
40
40
  if (idx === -1) {
41
- throw new Error(`column name "${col}" not found in header`);
41
+ const names = headerRow.map(h => `"${h}"`).join(', ');
42
+ throw new Error(`column name "${col}" not found in header; header has ${names}`);
42
43
  }
43
44
  return idx;
44
45
  }
@@ -60,7 +61,7 @@ function applyRename(rows, rename, hasHeader) {
60
61
  }
61
62
  return [headerRow, ...rows.slice(1)];
62
63
  }
63
- function processDataTable(node, tree) {
64
+ function processDataTable(node, tree, report) {
64
65
  const attrs = makeAttrs(node, {});
65
66
  const srcRaw = attrs.getFirstValue('src');
66
67
  const mimeAttr = attrs.getFirstValue('mime-type');
@@ -86,7 +87,7 @@ function processDataTable(node, tree) {
86
87
  if (scheme === 'data') {
87
88
  const dataBlock = findDataBlockByKey(tree, target);
88
89
  if (!dataBlock) {
89
- console.warn(`[data-table] no =data block found for data:${target} rendered as empty`);
90
+ report('table-source-unreadable', `no =data block found for data:${target}, table rendered as empty`, node);
90
91
  return { ...node, name: 'table', content: [] };
91
92
  }
92
93
  if (mimeAttr) {
@@ -94,7 +95,7 @@ function processDataTable(node, tree) {
94
95
  }
95
96
  const dataMime = makeAttrs(dataBlock, {}).getFirstValue('mime-type');
96
97
  if (!dataMime) {
97
- console.warn(`[data-table] =data block ${target} has no :mime-type rendered as empty`);
98
+ report('table-source-unreadable', `=data block ${target} has no :mime-type, table rendered as empty`, node);
98
99
  return { ...node, name: 'table', content: [] };
99
100
  }
100
101
  const parsed = parseMimeType(dataMime);
@@ -118,12 +119,12 @@ function processDataTable(node, tree) {
118
119
  const isCsv = mimeType === 'text/csv';
119
120
  const isTsv = mimeType === 'text/tab-separated-values';
120
121
  if (!isCsv && !isTsv) {
121
- console.warn(`[data-table] unsupported mime-type ${mimeType} rendered as empty`);
122
+ report('table-source-unreadable', `unsupported mime-type ${mimeType}, table rendered as empty`, node);
122
123
  return { ...node, name: 'table', content: [] };
123
124
  }
124
125
  let rows = isCsv ? parseCsv(csvText) : parseTsv(csvText);
125
126
  if (rows.length === 0) {
126
- console.warn(`[data-table] ${isCsv ? 'CSV' : 'TSV'} parse produced no rows rendered as empty`);
127
+ report('table-source-unreadable', `${isCsv ? 'CSV' : 'TSV'} source has no rows, table rendered as empty`, node);
127
128
  return { ...node, name: 'table', content: [] };
128
129
  }
129
130
  if (columns) {
@@ -137,16 +138,17 @@ function processDataTable(node, tree) {
137
138
  name: 'table',
138
139
  content: csvToTableContent(rows, hasHeader, attrs.getAllValues('allow')),
139
140
  };
140
- return normalizeCellCounts(filledNode, 'data-table');
141
+ return normalizeCellCounts(filledNode, 'data-table', report);
141
142
  }
142
- export default () => tree => {
143
+ export default (opt = {}) => tree => {
144
+ const report = makeTableReport(opt);
143
145
  const transformer = makeTransformer({
144
146
  'data-table': node => {
145
147
  try {
146
- return processDataTable(node, tree);
148
+ return processDataTable(node, tree, report);
147
149
  }
148
150
  catch (err) {
149
- console.warn(`[data-table] ${err.message}`);
151
+ report('table-source-unreadable', err.message, node);
150
152
  return { ...node, name: 'table', content: [] };
151
153
  }
152
154
  },
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-data-table.js","sourceRoot":"","sources":["../src/plugin-data-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-data-table.js","sourceRoot":"","sources":["../src/plugin-data-table.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,2BAA2B,CAAA;AACvD,OAAO,SAAS,MAAM,kBAAkB,CAAA;AACxC,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAA;AAExB,MAAM,gBAAgB,GAA2B;IAC/C,GAAG,EAAE,0BAA0B;IAC/B,GAAG,EAAE,2CAA2C;IAChD,GAAG,EAAE,2CAA2C;CACjD,CAAA;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACvC,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IACxB,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAC7C,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAa;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC5D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpF,OAAO,MAAM,CAAC,CAAC,CAAC;aACb,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACpE,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,SAA0B,EAAE,OAAe;IAClF,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACjB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,qBAAqB,OAAO,GAAG,CAAC,CAAA;QACnE,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,2BAA2B,CAAC,CAAA;IACjE,CAAC;IACD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrD,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,qCAAqC,KAAK,EAAE,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,cAAc,CAAC,IAAgB,EAAE,OAAiB,EAAE,SAAkB;IAC7E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,SAAS,WAAW,CAAC,IAAgB,EAAE,MAA8B,EAAE,SAAkB;IACvF,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAChD,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;QAChE,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM;IAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;IACjD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC7C,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACvF,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;IAEhD,IAAI,MAAM,IAAI,aAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IAED,IAAI,cAAc,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAA;IACpG,CAAC;IAED,IAAI,OAAe,CAAA;IACnB,IAAI,QAAgB,CAAA;IACpB,IAAI,SAAkB,CAAA;IAEtB,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QAChC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QAEhC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAClD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,yBAAyB,EAAE,iCAAiC,MAAM,2BAA2B,EAAE,IAAI,CAAC,CAAA;gBAC3G,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;YAChD,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,gDAAgD,MAAM,qCAAqC,CAAC,CAAA;YAC9G,CAAC;YACD,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;YACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,yBAAyB,EAAE,eAAe,MAAM,6CAA6C,EAAE,IAAI,CAAC,CAAA;gBAC3G,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;YAChD,CAAC;YACD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;YACtC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAA;YACtB,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAA;YAC9C,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;QACtC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAA;QACtB,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAA;QAC9C,OAAO,GAAG,QAAQ,CAAA;IACpB,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,KAAK,UAAU,CAAA;IACrC,MAAM,KAAK,GAAG,QAAQ,KAAK,2BAA2B,CAAA;IACtD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,yBAAyB,EAAE,yBAAyB,QAAQ,2BAA2B,EAAE,IAAI,CAAC,CAAA;QACrG,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAChD,CAAC;IACD,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,yBAAyB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,8CAA8C,EAAE,IAAI,CAAC,CAAA;QAC/G,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAChD,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,SAAmC,EAAE,SAAS,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,GAAG,IAAI;QACP,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;KACzE,CAAA;IACD,OAAO,mBAAmB,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;AAC9D,CAAC;AAED,eAAe,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,CAC1B,IAAI,CAAC,EAAE;IACL,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IACnC,MAAM,WAAW,GAAG,eAAe,CAAC;QAClC,YAAY,EAAE,IAAI,CAAC,EAAE;YACnB,IAAI,CAAC;gBACH,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YAC7C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,yBAAyB,EAAG,GAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAC/D,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;YAChD,CAAC;QACH,CAAC;KACF,CAAC,CAAA;IACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC,CAAA"}
@@ -3,49 +3,85 @@ import makeTransformer from './helpers/makeTransformer';
3
3
  import { isNamedBlock } from './helpers/makeTransformer';
4
4
  import makeAttrs from './helpers/config';
5
5
  import { parseAttributes } from './helpers/parseAttributes';
6
+ // `=config C<> :allow<I>` names a markup code, not a block: the trailing angles
7
+ // are the marker, and what it declares belongs to the code they name
8
+ const codeConfigOwner = (name) => typeof name === 'string' && /^[A-Z]<>$/.test(name) ? name[0] : null;
9
+ const collectAllowedIn = (content, inherited) => {
10
+ if (!Array.isArray(content))
11
+ return inherited;
12
+ let map = inherited;
13
+ for (const child of content) {
14
+ if (!child || typeof child !== 'object')
15
+ continue;
16
+ const node = child;
17
+ if (node.type !== 'config')
18
+ continue;
19
+ const owner = codeConfigOwner(node.name);
20
+ if (!owner)
21
+ continue;
22
+ if (map === inherited)
23
+ map = { ...inherited };
24
+ map[owner] = makeAttrs(node, {}).getAllValues('allow');
25
+ }
26
+ return map;
27
+ };
6
28
  const middle = () => tree => {
7
29
  const transformerBlocks = makeTransformer({
8
30
  ':para': (n, ctx, visiter) => {
31
+ const allowedIn = ctx.allowedIn;
9
32
  return makeTransformer({
10
33
  ':text': (n, ctx) => {
11
- return fcparser.parse(n.value, { parseAttributes });
34
+ return fcparser.parse(n.value, { allowedIn, parseAttributes });
12
35
  },
13
36
  ':verbatim': (n, ctx) => {
14
- return fcparser.parse(n.value, { parseAttributes });
37
+ return fcparser.parse(n.value, { allowedIn, parseAttributes });
15
38
  },
16
39
  })(n, { ...ctx });
17
40
  return n;
18
41
  },
19
42
  ':block': (n, ctx, visiter) => {
43
+ // a block is a lexical scope: a code configured inside it stays inside
44
+ const allowedIn = collectAllowedIn('content' in n ? n.content : undefined, ctx.allowedIn || {});
20
45
  // only =pod may have childs blocks
21
46
  if ('name' in n && n.name === 'pod')
22
47
  return {
23
48
  ...n,
24
- content: visiter(n.content, ctx, visiter),
49
+ content: visiter(n.content, { ...ctx, allowedIn }, visiter),
25
50
  };
26
51
  const conf = makeAttrs(n, ctx);
27
52
  const name = 'name' in n ? n.name : '';
28
53
  // Blocks whose content is verbatim by default — fcode parsing only
29
54
  // kicks in when :allow opts in (per spec, "Formatting within code blocks").
30
55
  const isVerbatimDefault = ['code', 'data', 'markdown', 'picture', 'formula'].includes(name);
31
- const allowValues = conf.getAllValues('allow');
32
56
  if (isNamedBlock(name))
33
57
  return n;
58
+ // A table owns rows, and the text sits in the cells, so :allow written on
59
+ // the table reaches them. The nearest declaration wins: cell, row, table.
60
+ const inheritsAllow = name === 'row' || name === 'cell';
61
+ const declared = conf.exists('allow')
62
+ ? conf.getAllValues('allow')
63
+ : inheritsAllow
64
+ ? ctx.allowFromTable
65
+ : undefined;
66
+ const allowValues = declared || [];
67
+ const passesAllow = name === 'table' || name === 'row' ? declared : ctx.allowFromTable;
34
68
  if (isVerbatimDefault && allowValues.length === 0)
35
69
  return n;
36
- // a cell built from data carries its own set; declared empty means no code acts
37
- if (name === 'cell' && conf.exists('allow') && allowValues.length === 0)
38
- return n;
39
- const allowed = allowValues.sort();
70
+ // declared empty means no code acts on this text; nested blocks still get
71
+ // their turn, since a cell may declare a set of its own
72
+ const literal = inheritsAllow && declared !== undefined && declared.length === 0;
73
+ const allowed = [...allowValues].sort();
74
+ const inner = { ...ctx, allowedIn, allowFromTable: passesAllow };
40
75
  const transformer = makeTransformer({
41
- ':verbatim': (n, ctx) => fcparser.parse(n.value, { allowed, parseAttributes }),
42
- ':text': (n, ctx) => fcparser.parse(n.value, { allowed, parseAttributes }),
43
- ':block': (n, ctx) => transformerBlocks(n, { ...ctx }),
76
+ ':verbatim': (node, ctx) => literal ? node : fcparser.parse(node.value, { allowed, allowedIn, parseAttributes }),
77
+ ':text': (node, ctx) => literal ? node : fcparser.parse(node.value, { allowed, allowedIn, parseAttributes }),
78
+ ':block': (node, ctx) => transformerBlocks(node, { ...ctx, allowedIn, allowFromTable: passesAllow }),
44
79
  });
45
- return { ...n, content: transformer(n.content, { ...ctx }) };
80
+ return { ...n, content: transformer(n.content, inner) };
46
81
  },
47
82
  });
48
- return transformerBlocks(tree, {});
83
+ // a document needs no enclosing block, so the top level is a scope of its own
84
+ return transformerBlocks(tree, { allowedIn: collectAllowedIn(tree, {}) });
49
85
  };
50
86
  export default middle;
51
87
  //# sourceMappingURL=plugin-formatting-codes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-formatting-codes.js","sourceRoot":"","sources":["../src/plugin-formatting-codes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-formatting-codes.js","sourceRoot":"","sources":["../src/plugin-formatting-codes.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ export declare function parseMimeType(raw: any): {
7
7
  export declare function findDataBlockByKey(tree: any, key: any): any;
8
8
  export declare function extractDataText(dataNode: any): any;
9
9
  export declare function csvToTableContent(csvRows: any, hasHeader?: boolean, allow?: string[]): any;
10
- export declare function normalizeCellCounts(tableNode: any, source?: string): any;
11
- declare const _default: () => (tree: any) => any;
10
+ export type TableReport = (code: string, message: string, node: any) => void;
11
+ export declare function makeTableReport(opt: any): TableReport;
12
+ export declare function normalizeCellCounts(tableNode: any, source?: string, report?: TableReport): any;
13
+ declare const _default: (opt?: {}) => (tree: any) => any;
12
14
  export default _default;
@@ -204,16 +204,27 @@ export function csvToTableContent(csvRows, hasHeader = false, allow = []) {
204
204
  return buildRowBlock(cells, hasHeader && i === 0);
205
205
  });
206
206
  }
207
- // ─── Error recovery (design notes Rules 2-4) ───────────────────────────────
207
+ export function makeTableReport(opt) {
208
+ const diagnostics = opt && Array.isArray(opt.diagnostics) ? opt.diagnostics : null;
209
+ return (code, message, node) => {
210
+ const location = node && node.location;
211
+ if (!diagnostics || !location)
212
+ return;
213
+ const seen = diagnostics.some(d => d.message === message && d.location.start.offset === location.start.offset);
214
+ if (!seen)
215
+ diagnostics.push({ severity: 'warning', code, message, location });
216
+ };
217
+ }
218
+ const noReport = () => { };
208
219
  // Rule 2 — table-level cell count validation. Pad short rows with empty
209
- // cells; truncate long rows. Emit a warning whenever a row is changed.
220
+ // cells; truncate long rows. Report whenever a row is changed.
210
221
  // Expected count is taken from the `:header` row if present, otherwise from
211
222
  // the row with the maximum cell count.
212
223
  //
213
224
  // Skipped when any cell uses `:colspan` or `:rowspan`: a spanning cell
214
225
  // occupies multiple columns, so naive cell counting would misreport row
215
226
  // width and drop legitimate spanned cells.
216
- export function normalizeCellCounts(tableNode, source = 'table') {
227
+ export function normalizeCellCounts(tableNode, source = 'table', report = noReport) {
217
228
  if (!tableNode || !Array.isArray(tableNode.content))
218
229
  return tableNode;
219
230
  const rows = tableNode.content.filter(c => c && c.type === 'block' && c.name === 'row');
@@ -240,13 +251,13 @@ export function normalizeCellCounts(tableNode, source = 'table') {
240
251
  const padding = [];
241
252
  for (let i = cells.length; i < expected; i++)
242
253
  padding.push(buildCellBlock(''));
243
- console.warn(`[${source}] row has ${cells.length} cells, expected ${expected} padded with ${padding.length} empty`);
254
+ report('table-row-cells', `${source} row has ${cells.length} of ${expected} cells, padded with ${padding.length} empty. A row continued on the next line needs a blank line before the next row`, tableNode);
244
255
  mutated = true;
245
256
  return { ...child, content: [...child.content, ...padding] };
246
257
  }
247
258
  // cells.length > expected → truncate
248
259
  const dropped = cells.length - expected;
249
- console.warn(`[${source}] row has ${cells.length} cells, expected ${expected} truncated ${dropped}`);
260
+ report('table-row-cells', `${source} row has ${cells.length} of ${expected} cells, dropped ${dropped}`, tableNode);
250
261
  mutated = true;
251
262
  // Keep non-cell entries (e.g. blanklines) and the first `expected` cells
252
263
  let keepCells = expected;
@@ -270,7 +281,7 @@ export function normalizeCellCounts(tableNode, source = 'table') {
270
281
  // for visible separators (`|` / `+`) surrounded by whitespace; lines without
271
282
  // any visible separator fall back to whitespace separation. Warns when more
272
283
  // than one separator type is observed within a single table.
273
- function detectMixedSeparators(lines) {
284
+ function detectMixedSeparators(lines, report = noReport, node = null) {
274
285
  const seen = new Set();
275
286
  for (const line of lines) {
276
287
  if (!line || typeof line !== 'string')
@@ -285,7 +296,7 @@ function detectMixedSeparators(lines) {
285
296
  break;
286
297
  }
287
298
  if (seen.size > 1) {
288
- console.warn(`[table] mixed separator types detected: ${Array.from(seen).join(', ')} recommend a single style`);
299
+ report('table-mixed-separators', `table mixes separator styles: ${Array.from(seen).join(', ')}. Keep one`, node);
289
300
  }
290
301
  }
291
302
  // Rule 4 — replace =table with =code block. Used when a referenced =data
@@ -436,9 +447,41 @@ const wrapImplicitCells = rowNode => {
436
447
  });
437
448
  return { ...rowNode, content: wrapped };
438
449
  };
450
+ // An abbreviated `=for row` owns its own paragraph, so cells written under it
451
+ // stay at table level and both the row and the cells lose their meaning. They
452
+ // are attached to the row above, and the author is told, per the same recovery
453
+ // contract that pads and truncates rows.
454
+ const attachOrphanCells = (tableNode, report = noReport) => {
455
+ const content = tableNode.content;
456
+ if (!Array.isArray(content))
457
+ return tableNode;
458
+ if (!content.some(c => c && c.type === 'block' && c.name === 'cell'))
459
+ return tableNode;
460
+ const out = [];
461
+ let openRow = null;
462
+ for (const child of content) {
463
+ if (child && child.type === 'block' && child.name === 'row') {
464
+ openRow = { ...child, content: Array.isArray(child.content) ? [...child.content] : [] };
465
+ out.push(openRow);
466
+ continue;
467
+ }
468
+ if (child && child.type === 'block' && child.name === 'cell') {
469
+ if (!openRow) {
470
+ openRow = { type: 'block', name: 'row', margin: child.margin || '', content: [] };
471
+ out.push(openRow);
472
+ }
473
+ openRow.content.push(child);
474
+ continue;
475
+ }
476
+ out.push(child);
477
+ }
478
+ report('table-cell-outside-row', 'a cell written outside a row was attached to the row above it; an abbreviated =for row holds only its own paragraph, so write =begin row and =end row around the cells', tableNode);
479
+ return { ...tableNode, content: out };
480
+ };
439
481
  const isStructured = tableNode => Array.isArray(tableNode.content) &&
440
482
  tableNode.content.some(c => c && c.type === 'block' && (c.name === 'row' || c.name === 'cell'));
441
- export default () => tree => {
483
+ export default (opt = {}) => tree => {
484
+ const report = makeTableReport(opt);
442
485
  const transformer = makeTransformer({
443
486
  table: (node, ctx, visiter) => {
444
487
  // CSV/data source reference (spec §1672):
@@ -449,9 +492,12 @@ export default () => tree => {
449
492
  const dataBlock = findDataBlockByKey(tree, ref.target);
450
493
  if (!dataBlock) {
451
494
  // Rule 4: source not found → empty table (still a =table block)
452
- console.warn(`[table] no =data block found for data:${ref.target} rendered as empty`);
495
+ report('table-source-unreadable', `no =data block found for data:${ref.target}, table rendered as empty`, node);
453
496
  return { ...node, content: [] };
454
497
  }
498
+ // whatever is built out of a covered =data block is covered as well,
499
+ // otherwise the table is a way to read what the cover hides
500
+ const carryCover = built => makeAttrs(dataBlock, {}).getFirstValue('masked') ? { ...built, guarded: true } : built;
455
501
  const rawMime = makeAttrs(dataBlock, {}).getFirstValue('mime-type');
456
502
  const { type: mimeType, params: mimeParams } = parseMimeType(rawMime);
457
503
  const isCsv = mimeType === 'text/csv';
@@ -460,22 +506,23 @@ export default () => tree => {
460
506
  const text = extractDataText(dataBlock);
461
507
  const rows = isCsv ? parseCsv(text) : parseTsv(text);
462
508
  if (rows.length === 0) {
463
- console.warn(`[table] ${isCsv ? 'CSV' : 'TSV'} parse produced no rows for data:${ref.target} rendered as empty`);
509
+ report('table-source-unreadable', `${isCsv ? 'CSV' : 'TSV'} source data:${ref.target} has no rows, table rendered as empty`, node);
464
510
  return { ...node, content: [] };
465
511
  }
466
512
  const hasHeader = mimeParams.header === 'present';
467
513
  const allow = makeAttrs(node, {}).getAllValues('allow');
468
514
  const filledNode = { ...node, content: csvToTableContent(rows, hasHeader, allow) };
469
- return normalizeCellCounts(filledNode, `table data:${ref.target}`);
515
+ return carryCover(normalizeCellCounts(filledNode, `table data:${ref.target}`, report));
470
516
  }
471
517
  // Rule 4: source not tabular → render as code block so content remains visible
472
- console.warn(`[table] =data :key<${ref.target}> has non-tabular mime-type ${rawMime || '(none)'} rendered as =code`);
473
- return buildCodeFromDataBlock(node, dataBlock);
518
+ report('table-source-unreadable', `=data :key<${ref.target}> has non-tabular mime-type ${rawMime || '(none)'}, rendered as =code`, node);
519
+ return carryCover(buildCodeFromDataBlock(node, dataBlock));
474
520
  }
475
521
  // structured mode: transform row children (wrap implicit cells), then
476
522
  // apply Rule 2 cell count normalization.
477
523
  if (isStructured(node)) {
478
- const transformedContent = (node.content || []).map(c => {
524
+ const attached = attachOrphanCells(node, report);
525
+ const transformedContent = (attached.content || []).map(c => {
479
526
  if (c && c.name === 'row')
480
527
  return wrapImplicitCells(c);
481
528
  return c;
@@ -483,7 +530,7 @@ export default () => tree => {
483
530
  // a matched rule replaces the node without descending, so recurse
484
531
  // here or tables nested inside cells keep their raw text rows
485
532
  const recursed = visiter ? visiter(transformedContent, ctx) : transformedContent;
486
- return normalizeCellCounts({ ...node, content: recursed }, 'table');
533
+ return normalizeCellCounts({ ...attached, content: recursed }, 'table', report);
487
534
  }
488
535
  let rows = [];
489
536
  const collectValues = row => {
@@ -509,7 +556,7 @@ export default () => tree => {
509
556
  const lines = flattenDeep(rows.map(splitToLines));
510
557
  const separators = flattenDeep(seps.map(splitToLines));
511
558
  // Rule 3: warn on mixed separator types within a single table
512
- detectMixedSeparators(lines);
559
+ detectMixedSeparators(lines, report, node);
513
560
  // collect text rows
514
561
  let textRows = [];
515
562
  makeTransformer({
@@ -548,7 +595,7 @@ export default () => tree => {
548
595
  },
549
596
  'head:text': head => makeHeaderRow(splitToCells(head.value).map(makeCell)),
550
597
  })(node);
551
- return normalizeCellCounts(res, 'table');
598
+ return normalizeCellCounts(res, 'table', report);
552
599
  },
553
600
  });
554
601
  return transformer(tree, {});