@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.
- package/CHANGELOG.podlite +28 -0
- package/esm/block-names.d.ts +1 -0
- package/esm/block-names.js +6 -1
- package/esm/block-names.js.map +1 -1
- package/esm/blocks-helpers.d.ts +1 -1
- package/esm/blocks-helpers.js +2 -1
- package/esm/blocks-helpers.js.map +1 -1
- package/esm/exportHtml.js +10 -5
- package/esm/exportHtml.js.map +1 -1
- package/esm/exportMarkdown.js +58 -26
- package/esm/exportMarkdown.js.map +1 -1
- package/esm/grammarfc.js +7794 -6355
- package/esm/grammarfc.js.map +1 -1
- package/esm/guard.d.ts +5 -0
- package/esm/guard.js +39 -0
- package/esm/guard.js.map +1 -0
- package/esm/index.d.ts +2 -1
- package/esm/index.js +2 -1
- package/esm/index.js.map +1 -1
- package/esm/pluggableParser.js +3 -0
- package/esm/pluggableParser.js.map +1 -1
- package/esm/plugin-data-table.d.ts +1 -1
- package/esm/plugin-data-table.js +13 -11
- package/esm/plugin-data-table.js.map +1 -1
- package/esm/plugin-formatting-codes.js +49 -13
- package/esm/plugin-formatting-codes.js.map +1 -1
- package/esm/plugin-tables.d.ts +4 -2
- package/esm/plugin-tables.js +64 -17
- package/esm/plugin-tables.js.map +1 -1
- package/esm/selectors.d.ts +1 -0
- package/esm/selectors.js +42 -19
- package/esm/selectors.js.map +1 -1
- package/esm/types.d.ts +6 -2
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/lib/block-names.d.ts +1 -0
- package/lib/block-names.js +8 -2
- package/lib/blocks-helpers.d.ts +1 -1
- package/lib/blocks-helpers.js +2 -1
- package/lib/exportHtml.js +10 -5
- package/lib/exportMarkdown.js +58 -26
- package/lib/grammarfc.js +7794 -6355
- package/lib/guard.d.ts +5 -0
- package/lib/guard.js +47 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.js +5 -1
- package/lib/pluggableParser.js +3 -0
- package/lib/plugin-data-table.d.ts +1 -1
- package/lib/plugin-data-table.js +12 -10
- package/lib/plugin-formatting-codes.js +49 -13
- package/lib/plugin-tables.d.ts +4 -2
- package/lib/plugin-tables.js +65 -17
- package/lib/selectors.d.ts +1 -0
- package/lib/selectors.js +44 -20
- package/lib/types.d.ts +6 -2
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
- package/schema/AstTree.json +77 -1
- package/schema/PodliteDocument.json +77 -1
package/esm/guard.d.ts
ADDED
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
|
package/esm/guard.js.map
ADDED
|
@@ -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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"}
|
package/esm/pluggableParser.js
CHANGED
|
@@ -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":"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,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAA;QACzC,MAAM,OAAO,GAAG,MAAM,EAAE;aACrB,GAAG,CAAC,YAAY,CAAC;aACjB,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC,CAAA;QACvC,4EAA4E;QAC5E,kEAAkE;QAClE,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,CACF,CAAC,WAAW,CAAC,IAAI,CACf,KAAK,CAAC,EAAE,CACN,KAAK,KAAK,CAAC;YACX,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;YACtD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CACrD,CACJ,CAAA;QACD,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;QACvD,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;QACjD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,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;
|
|
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;
|
package/esm/plugin-data-table.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"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,
|
|
1
|
+
{"version":3,"file":"plugin-data-table.js","sourceRoot":"","sources":["../src/plugin-data-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
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': (
|
|
42
|
-
':text': (
|
|
43
|
-
':block': (
|
|
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,
|
|
80
|
+
return { ...n, content: transformer(n.content, inner) };
|
|
46
81
|
},
|
|
47
82
|
});
|
|
48
|
-
|
|
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":"AAAA,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAA;AACvC,OAAO,eAAe,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,SAAS,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin-formatting-codes.js","sourceRoot":"","sources":["../src/plugin-formatting-codes.ts"],"names":[],"mappings":"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"}
|
package/esm/plugin-tables.d.ts
CHANGED
|
@@ -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
|
|
11
|
-
declare
|
|
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;
|
package/esm/plugin-tables.js
CHANGED
|
@@ -204,16 +204,27 @@ export function csvToTableContent(csvRows, hasHeader = false, allow = []) {
|
|
|
204
204
|
return buildRowBlock(cells, hasHeader && i === 0);
|
|
205
205
|
});
|
|
206
206
|
}
|
|
207
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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({ ...
|
|
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, {});
|