@podlite/schema 0.0.38 → 0.0.39

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 CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  =head1 Upcoming
4
4
 
5
+ =head1 0.0.39
6
+
7
+ =item resolve C<=table data:<key>> as CSV from a C<=data :mime-type<text/csv>> block (spec §1672) — table content is replaced with C<=row>/C<=cell> structure parsed per RFC 4180 (comma delimiter, C<"..."> quoted fields with C<""> escape). Spec §1672 does not define how to mark a header in CSV-sourced tables; authors who need a header row should use a structured table with C<=begin row :header> or a Markdown GFM table. C<file:<path>> scheme is left unresolved for host-driven readers
8
+ =item resolve C<=table data:<key>> as TSV when the C<=data> block carries C<:mime-type<text/tab-separated-values>> — split on tabs only, no quoting (C<"> is a literal character, unlike CSV)
9
+ =item add table error recovery — pad short rows with empty cells, truncate over-long rows; expected cell count is taken from a C<:header> row when present, otherwise from the row with the maximum cell count. Warn on each adjustment. Tables containing C<:colspan>/C<:rowspan> cells are skipped (naive count would mis-handle spanning)
10
+ =item warn on mixed column separator types within a single text-mode C<=table> (e.g. C<|> in one row, whitespace in another) — does not block parsing
11
+ =item improve CSV/TSV error recovery — missing C<=data> block leaves the table empty; a non-tabular mime-type is rendered as a C<=code> block so the underlying content remains visible
12
+ =item add per-line separator detection for text-mode C<=table> when lines disagree about separator type. A common pattern — header with C<|> for visual emphasis and data rows aligned by whitespace alone — used to collapse columns under the unified positional mask; each line is now parsed on its own and produces the expected cells. Tables with a single separator type, or with both visible kinds (C<|>+C<+>) handled by the shared mask, still go through the legacy positional path so continuation lines in multi-line rows keep their column alignment
13
+ =item move C<parseSelector> and C<runSelector> here from C<@podlite/publisher>. These are pure AST queries (no I/O, no filesystem) and belong in C<@podlite/schema>. C<runSelector> is now generic over a C<SelectorDoc> shape (C<{ file, node }>), so consumers without the publisher's richer C<publishRecord> type can use it directly. The publisher re-exports from C<@podlite/schema> for backward compatibility
14
+
5
15
  =head1 0.0.38
6
16
 
7
17
  =item added C<type: "map"> on config items parsed from C<:attr{k=>v, ...}> key-value syntax — previously the hash form returned the map value without a type annotation, making it indistinguishable from other value kinds
package/esm/index.d.ts CHANGED
@@ -78,5 +78,7 @@ export { parse as parse };
78
78
  export { default as toHtml } from './exportHtml';
79
79
  export { default as toMarkdown } from './exportMarkdown';
80
80
  export { default as Writer } from './writer';
81
+ export { parseSelector, runSelector } from './selectors';
82
+ export type { SelectorDoc, ParsedSelector } from './selectors';
81
83
  declare const VERSION: any;
82
84
  export { VERSION as version };
package/esm/index.js CHANGED
@@ -140,6 +140,7 @@ export { parse as parse };
140
140
  export { default as toHtml } from './exportHtml';
141
141
  export { default as toMarkdown } from './exportMarkdown';
142
142
  export { default as Writer } from './writer';
143
+ export { parseSelector, runSelector } from './selectors';
143
144
  // Cannot be `import` as it's not under TS root dir
144
145
  // https://stackoverflow.com/questions/51070138/how-to-import-package-json-into-typescript-file-without-including-it-in-the-comp
145
146
  const { version: VERSION } = require('../package.json');
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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"}
@@ -4,13 +4,271 @@
4
4
  * and the remaining content is treated as the definition for the term.
5
5
  */
6
6
  import makeTransformer from './helpers/makeTransformer';
7
+ import makeAttrs from './helpers/config';
7
8
  function flattenDeep(arr) {
8
9
  return arr.reduce((acc, val) => (Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val)), []);
9
10
  }
11
+ // ─── CSV source for =table (spec §1672) ────────────────────────────────────
12
+ // Parse CSV content per RFC 4180: comma delimiter, `"`-quoted fields with
13
+ // `""` as embedded-quote escape. Supports LF or CRLF line endings. Leading
14
+ // indentation typical of =data block bodies is stripped from each line.
15
+ function parseCsv(text) {
16
+ const rows = [];
17
+ let field = '';
18
+ let row = [];
19
+ let inQuote = false;
20
+ let i = 0;
21
+ while (i < text.length) {
22
+ const c = text[i];
23
+ if (inQuote) {
24
+ if (c === '"' && text[i + 1] === '"') {
25
+ field += '"';
26
+ i += 2;
27
+ continue;
28
+ }
29
+ if (c === '"') {
30
+ inQuote = false;
31
+ i++;
32
+ continue;
33
+ }
34
+ field += c;
35
+ i++;
36
+ continue;
37
+ }
38
+ if (c === '"' && field === '') {
39
+ inQuote = true;
40
+ i++;
41
+ continue;
42
+ }
43
+ if (c === ',') {
44
+ row.push(field);
45
+ field = '';
46
+ i++;
47
+ continue;
48
+ }
49
+ if (c === '\r') {
50
+ i++;
51
+ continue;
52
+ }
53
+ if (c === '\n') {
54
+ row.push(field);
55
+ rows.push(row);
56
+ row = [];
57
+ field = '';
58
+ i++;
59
+ continue;
60
+ }
61
+ field += c;
62
+ i++;
63
+ }
64
+ if (field !== '' || row.length > 0) {
65
+ row.push(field);
66
+ rows.push(row);
67
+ }
68
+ // Drop rows that are entirely blank (empty content after trim).
69
+ return rows.filter(r => !(r.length === 1 && r[0].trim() === ''));
70
+ }
71
+ // Parse a TSV (tab-separated values) blob. Unlike CSV, TSV has no quoting
72
+ // mechanism — fields are split strictly on tabs and `"` is a literal
73
+ // character. Tabs and newlines inside fields are not representable in TSV.
74
+ function parseTsv(text) {
75
+ const lines = text.split(/\r?\n/);
76
+ const rows = lines.map(line => line.split('\t'));
77
+ return rows.filter(r => !(r.length === 1 && r[0].trim() === ''));
78
+ }
79
+ // Locate the first `=data` block with a matching `:key` attribute anywhere
80
+ // in the document tree.
81
+ function findDataBlockByKey(tree, key) {
82
+ let found = null;
83
+ const walk = node => {
84
+ if (found)
85
+ return;
86
+ if (Array.isArray(node)) {
87
+ node.forEach(walk);
88
+ return;
89
+ }
90
+ if (!node || typeof node !== 'object')
91
+ return;
92
+ if (node.type === 'block' && node.name === 'data') {
93
+ const attrs = makeAttrs(node, {});
94
+ if (attrs.getFirstValue('key') === key) {
95
+ found = node;
96
+ return;
97
+ }
98
+ }
99
+ if (Array.isArray(node.content))
100
+ node.content.forEach(walk);
101
+ };
102
+ walk(tree);
103
+ return found;
104
+ }
105
+ function extractDataText(dataNode) {
106
+ if (!dataNode || !Array.isArray(dataNode.content))
107
+ return '';
108
+ const verbatim = dataNode.content.find(c => c && c.type === 'verbatim');
109
+ return verbatim && typeof verbatim.value === 'string' ? verbatim.value : '';
110
+ }
111
+ // Detect whether the =table body is a single-line source reference like
112
+ // `data:key` or `file:path` (spec §1672). Returns the parsed reference or
113
+ // null if the body is ordinary table content.
114
+ function detectSourceReference(tableNode) {
115
+ const texts = [];
116
+ const walker = makeTransformer({
117
+ 'row:text': r => {
118
+ texts.push(r.value);
119
+ return r;
120
+ },
121
+ 'head:text': h => {
122
+ texts.push(h.value);
123
+ return h;
124
+ },
125
+ });
126
+ walker(tableNode, {});
127
+ const joined = texts.join('\n').trim();
128
+ const lines = joined
129
+ .split(/\r?\n/)
130
+ .map(l => l.trim())
131
+ .filter(l => l.length > 0);
132
+ if (lines.length !== 1)
133
+ return null;
134
+ const m = lines[0].match(/^(data|file):(\S+)$/);
135
+ if (!m)
136
+ return null;
137
+ return { scheme: m[1], target: m[2] };
138
+ }
139
+ function buildCellBlock(text) {
140
+ return {
141
+ name: 'cell',
142
+ type: 'block',
143
+ margin: '',
144
+ content: [{ type: 'text', value: text }],
145
+ };
146
+ }
147
+ function buildRowBlock(cells, isHeader) {
148
+ const block = {
149
+ name: 'row',
150
+ type: 'block',
151
+ margin: '',
152
+ content: cells,
153
+ };
154
+ if (isHeader) {
155
+ block.config = [{ name: 'header', value: true, type: 'boolean' }];
156
+ }
157
+ return block;
158
+ }
159
+ // Convert parsed CSV/TSV rows to plain `=row`/`=cell` blocks. The spec is
160
+ // silent on how to mark a header row in `=table data:<key>` references, so
161
+ // no row receives `:header` here. Authors who need a header row can use a
162
+ // structured table with explicit `=begin row :header`, or a Markdown GFM
163
+ // table with a separator line.
164
+ function csvToTableContent(csvRows) {
165
+ return csvRows.map(row => {
166
+ const cells = row.map(v => buildCellBlock(v.trim()));
167
+ return buildRowBlock(cells, false);
168
+ });
169
+ }
170
+ // ─── Error recovery (design notes Rules 2-4) ───────────────────────────────
171
+ // Rule 2 — table-level cell count validation. Pad short rows with empty
172
+ // cells; truncate long rows. Emit a warning whenever a row is changed.
173
+ // Expected count is taken from the `:header` row if present, otherwise from
174
+ // the row with the maximum cell count.
175
+ //
176
+ // Skipped when any cell uses `:colspan` or `:rowspan`: a spanning cell
177
+ // occupies multiple columns, so naive cell counting would misreport row
178
+ // width and drop legitimate spanned cells.
179
+ function normalizeCellCounts(tableNode, source = 'table') {
180
+ if (!tableNode || !Array.isArray(tableNode.content))
181
+ return tableNode;
182
+ const rows = tableNode.content.filter(c => c && c.type === 'block' && c.name === 'row');
183
+ if (rows.length === 0)
184
+ return tableNode;
185
+ const cellsOf = row => (Array.isArray(row.content) ? row.content.filter(c => c && c.name === 'cell') : []);
186
+ const isHeaderRow = row => Array.isArray(row.config) && row.config.some(a => a.name === 'header' && a.value === true);
187
+ const cellHasSpan = cell => Array.isArray(cell.config) && cell.config.some(a => a.name === 'colspan' || a.name === 'rowspan');
188
+ const rowHasSpan = row => cellsOf(row).some(cellHasSpan);
189
+ if (rows.some(rowHasSpan))
190
+ return tableNode;
191
+ const headerRow = rows.find(isHeaderRow);
192
+ const expected = headerRow ? cellsOf(headerRow).length : Math.max(...rows.map(r => cellsOf(r).length));
193
+ if (expected === 0)
194
+ return tableNode;
195
+ let mutated = false;
196
+ const newContent = tableNode.content.map(child => {
197
+ if (!child || child.type !== 'block' || child.name !== 'row')
198
+ return child;
199
+ const cells = cellsOf(child);
200
+ if (cells.length === expected)
201
+ return child;
202
+ if (cells.length < expected) {
203
+ const padding = [];
204
+ for (let i = cells.length; i < expected; i++)
205
+ padding.push(buildCellBlock(''));
206
+ console.warn(`[${source}] row has ${cells.length} cells, expected ${expected} — padded with ${padding.length} empty`);
207
+ mutated = true;
208
+ return { ...child, content: [...child.content, ...padding] };
209
+ }
210
+ // cells.length > expected → truncate
211
+ const dropped = cells.length - expected;
212
+ console.warn(`[${source}] row has ${cells.length} cells, expected ${expected} — truncated ${dropped}`);
213
+ mutated = true;
214
+ // Keep non-cell entries (e.g. blanklines) and the first `expected` cells
215
+ let keepCells = expected;
216
+ const trimmed = [];
217
+ for (const c of child.content || []) {
218
+ if (c && c.type === 'block' && c.name === 'cell') {
219
+ if (keepCells > 0) {
220
+ trimmed.push(c);
221
+ keepCells--;
222
+ }
223
+ }
224
+ else {
225
+ trimmed.push(c);
226
+ }
227
+ }
228
+ return { ...child, content: trimmed };
229
+ });
230
+ return mutated ? { ...tableNode, content: newContent } : tableNode;
231
+ }
232
+ // Rule 3 — mixed separator detection (text-mode only). Inspects each line
233
+ // for visible separators (`|` / `+`) surrounded by whitespace; lines without
234
+ // any visible separator fall back to whitespace separation. Warns when more
235
+ // than one separator type is observed within a single table.
236
+ function detectMixedSeparators(lines) {
237
+ const seen = new Set();
238
+ for (const line of lines) {
239
+ if (!line || typeof line !== 'string')
240
+ continue;
241
+ if (/\s\|\s/.test(line))
242
+ seen.add('pipe');
243
+ else if (/\s\+\s/.test(line))
244
+ seen.add('plus');
245
+ else if (line.trim().length > 0)
246
+ seen.add('whitespace');
247
+ if (seen.size > 1)
248
+ break;
249
+ }
250
+ if (seen.size > 1) {
251
+ console.warn(`[table] mixed separator types detected: ${Array.from(seen).join(', ')} — recommend a single style`);
252
+ }
253
+ }
254
+ // Rule 4 — replace =table with =code block. Used when a referenced =data
255
+ // source has a non-CSV mime type: the spec mandates the source be rendered
256
+ // as a code block so the user can still see the underlying content.
257
+ function buildCodeFromDataBlock(tableNode, dataBlock) {
258
+ return {
259
+ type: 'block',
260
+ name: 'code',
261
+ margin: tableNode.margin || '',
262
+ content: Array.isArray(dataBlock.content) ? dataBlock.content : [],
263
+ config: Array.isArray(tableNode.config) ? tableNode.config : [],
264
+ };
265
+ }
10
266
  /**
11
267
  * Helpers section
12
268
  */
13
- // run cb in symbols pair
269
+ // Bit-mask helper used by the positional column extractor for multi-line
270
+ // rows. Compares two same-length digit strings character by character via
271
+ // `cb`, returning the joined result.
14
272
  const strbin = (str1, str2, cb) => {
15
273
  let res = [];
16
274
  for (let i = 0; str1.length > i; i++) {
@@ -18,62 +276,109 @@ const strbin = (str1, str2, cb) => {
18
276
  }
19
277
  return res.join('');
20
278
  };
21
- // Create mask for extract columns
279
+ // Build a unified column-position mask across a set of lines. Used as a
280
+ // fallback when a row spans multiple lines (continuation lines that align
281
+ // content by character position rather than by separator). Returns a binary
282
+ // string where `0` runs mark column ranges and `1` runs mark gaps.
22
283
  const makeMask = (lines, separators) => {
23
- // calculate template length
24
284
  const tmplLength = Math.max(...[...lines, ...separators].map(s => s.length));
25
- // make bin mask for each string
26
285
  const masks = lines.map(str => {
27
- /** make mask for each line
28
- ' The Shoveller | Eddie Stevens | King Arthur\'s singing shovel',
29
- '0000000011111111111110001111111111111000001111111111111111111111111111' ]
30
- then not(mask) ... then & masks
31
- */
32
- // enlarge string to tmplLength
33
- let tstr = str + ' '.repeat(tmplLength - str.length);
34
- let mask = [];
286
+ const tstr = str + ' '.repeat(tmplLength - str.length);
287
+ const mask = [];
35
288
  const re = /\s+[+|\s]\s/g;
36
289
  let match;
37
290
  while ((match = re.exec(tstr)) != null) {
38
291
  const tmpMask = '1'.repeat(match.index) + '0'.repeat(match[0].length);
39
292
  mask.push(tmpMask + '1'.repeat(tmplLength - tmpMask.length));
40
293
  }
41
- return mask.reduce((a, b) => {
42
- return strbin(a, b, (i1, i2) => i1 & i2);
43
- }, '1'.repeat(tmplLength));
294
+ return mask.reduce((a, b) => strbin(a, b, (i1, i2) => i1 & i2), '1'.repeat(tmplLength));
44
295
  });
45
- // make result mask
46
296
  const inverted = masks.map(m => strbin(m, '', i1 => (i1 == 0 ? 1 : 0)));
47
- const columnTemplate = inverted.reduce((a, b) => {
48
- return strbin(a, b, (i1, i2) => i1 & i2);
49
- }, '1'.repeat(tmplLength));
50
- return columnTemplate;
297
+ return inverted.reduce((a, b) => strbin(a, b, (i1, i2) => i1 & i2), '1'.repeat(tmplLength));
51
298
  };
299
+ // Apply a column-position template to a multi-line text block, extracting
300
+ // per-column substrings and aggregating across lines (continuation lines
301
+ // append to the cell at the same column position).
52
302
  const extractColumnsByTemplate = (text, template) => {
53
- const lines = flattenDeep(text
54
- .split(/\n/) // split each row by eol
55
- .filter(str => str.length > 0));
303
+ const lines = flattenDeep(text.split(/\n/).filter(s => s.length > 0));
56
304
  const cols = lines.map(line => {
57
305
  const re = /((1+|0+))/g;
58
- let columns = [];
306
+ const columns = [];
59
307
  let match;
60
308
  while ((match = re.exec(template)) != null) {
61
- if (match[0][0] == 1)
309
+ if (match[0][0] == '1')
62
310
  continue;
63
- const s = line.substring(match.index, match.index + match[0].length);
64
- columns.push(s);
311
+ columns.push(line.substring(match.index, match.index + match[0].length));
65
312
  }
66
313
  return columns;
67
314
  });
68
- let result = [];
69
- result = cols.reduce((a, b) => {
315
+ const result = [];
316
+ cols.reduce((a, b) => {
70
317
  for (let i = 0; i < b.length; i++) {
71
318
  a[i] = (a[i] === undefined ? '' : a[i]) + ' ' + b[i];
72
319
  }
73
320
  return a;
74
- }, []);
321
+ }, result);
75
322
  return result;
76
323
  };
324
+ const detectLineSeparator = (line) => {
325
+ if (/(?:^|\s)\|(?:\s|$)/.test(line))
326
+ return 'pipe';
327
+ if (/(?:^|\s)\+(?:\s|$)/.test(line))
328
+ return 'plus';
329
+ return 'whitespace';
330
+ };
331
+ const trimEdgeEmpty = (cells) => {
332
+ // A leading `|` produces an empty cell at index 0; a trailing `|` does the
333
+ // same at the end. Drop those edge artifacts. Empty cells in the middle of
334
+ // the row are preserved.
335
+ let start = 0;
336
+ let end = cells.length;
337
+ if (cells[start] === '')
338
+ start++;
339
+ if (end > start && cells[end - 1] === '')
340
+ end--;
341
+ return cells.slice(start, end);
342
+ };
343
+ const splitLineByPipe = (line) => trimEdgeEmpty(line.split(/\s*\|\s*/).map(c => c.trim()));
344
+ const splitLineByPlus = (line) => trimEdgeEmpty(line.split(/\s*\+\s*/).map(c => c.trim()));
345
+ const splitLineByWhitespace = (line) => line
346
+ .trim()
347
+ .split(/\s{2,}/)
348
+ .filter(c => c !== '');
349
+ const splitLineCells = (line) => {
350
+ const trimmed = line.trim();
351
+ if (trimmed === '')
352
+ return [];
353
+ const kind = detectLineSeparator(line);
354
+ if (kind === 'pipe')
355
+ return splitLineByPipe(line);
356
+ if (kind === 'plus')
357
+ return splitLineByPlus(line);
358
+ return splitLineByWhitespace(line);
359
+ };
360
+ // Convert a row's raw text (which may span multiple lines) to cell values.
361
+ // Multi-line rows: take the separator kind from the first non-blank line and
362
+ // apply it to every line of the row, then aggregate column-wise so that a
363
+ // continuation line (e.g. wrapped cell content) appends to the cell from the
364
+ // previous line in the same column.
365
+ const rowToCells = (rowValue) => {
366
+ const lines = rowValue.split(/\r?\n/).filter(l => l.trim() !== '');
367
+ if (lines.length === 0)
368
+ return [];
369
+ if (lines.length === 1)
370
+ return splitLineCells(lines[0]);
371
+ const kind = detectLineSeparator(lines[0]);
372
+ const splitFn = kind === 'pipe' ? splitLineByPipe : kind === 'plus' ? splitLineByPlus : splitLineByWhitespace;
373
+ const lineCells = lines.map(splitFn);
374
+ const maxCols = Math.max(...lineCells.map(c => c.length));
375
+ const merged = [];
376
+ for (let i = 0; i < maxCols; i++) {
377
+ const parts = lineCells.map(line => line[i] ?? '').filter(p => p !== '');
378
+ merged.push(parts.join(' '));
379
+ }
380
+ return merged;
381
+ };
77
382
  /**
78
383
  * Main transforms
79
384
  */
@@ -97,14 +402,43 @@ const isStructured = tableNode => Array.isArray(tableNode.content) &&
97
402
  export default () => tree => {
98
403
  const transformer = makeTransformer({
99
404
  table: node => {
100
- // structured mode: transform row children (wrap implicit cells)
405
+ // CSV/data source reference (spec §1672):
406
+ // =table data:<key> → resolve =data block with :key<key>
407
+ // =table file:<path> → defer to host reader (not implemented here)
408
+ const ref = detectSourceReference(node);
409
+ if (ref && ref.scheme === 'data') {
410
+ const dataBlock = findDataBlockByKey(tree, ref.target);
411
+ if (!dataBlock) {
412
+ // Rule 4: source not found → empty table (still a =table block)
413
+ console.warn(`[table] no =data block found for data:${ref.target} — rendered as empty`);
414
+ return { ...node, content: [] };
415
+ }
416
+ const mimeType = makeAttrs(dataBlock, {}).getFirstValue('mime-type');
417
+ const isCsv = mimeType === 'text/csv';
418
+ const isTsv = mimeType === 'text/tab-separated-values';
419
+ if (isCsv || isTsv) {
420
+ const text = extractDataText(dataBlock);
421
+ const rows = isCsv ? parseCsv(text) : parseTsv(text);
422
+ if (rows.length === 0) {
423
+ console.warn(`[table] ${isCsv ? 'CSV' : 'TSV'} parse produced no rows for data:${ref.target} — rendered as empty`);
424
+ return { ...node, content: [] };
425
+ }
426
+ const filledNode = { ...node, content: csvToTableContent(rows) };
427
+ return normalizeCellCounts(filledNode, `table data:${ref.target}`);
428
+ }
429
+ // Rule 4: source not tabular → render as code block so content remains visible
430
+ console.warn(`[table] =data :key<${ref.target}> has non-tabular mime-type ${mimeType || '(none)'} — rendered as =code`);
431
+ return buildCodeFromDataBlock(node, dataBlock);
432
+ }
433
+ // structured mode: transform row children (wrap implicit cells), then
434
+ // apply Rule 2 cell count normalization.
101
435
  if (isStructured(node)) {
102
436
  const transformedContent = (node.content || []).map(c => {
103
437
  if (c && c.name === 'row')
104
438
  return wrapImplicitCells(c);
105
439
  return c;
106
440
  });
107
- return { ...node, content: transformedContent };
441
+ return normalizeCellCounts({ ...node, content: transformedContent }, 'table');
108
442
  }
109
443
  let rows = [];
110
444
  const collectValues = row => {
@@ -129,6 +463,8 @@ export default () => tree => {
129
463
  // split each row into lines
130
464
  const lines = flattenDeep(rows.map(splitToLines));
131
465
  const separators = flattenDeep(seps.map(splitToLines));
466
+ // Rule 3: warn on mixed separator types within a single table
467
+ detectMixedSeparators(lines);
132
468
  // collect text rows
133
469
  let textRows = [];
134
470
  makeTransformer({
@@ -136,33 +472,48 @@ export default () => tree => {
136
472
  textRows.push(row.value);
137
473
  },
138
474
  })(node);
139
- const columnTemplate = makeMask(lines, separators);
140
475
  const makeBlock = (name, content, extra = {}) => {
141
476
  return { ...extra, name, type: 'block', content: Array.isArray(content) ? content : [content] };
142
477
  };
143
478
  const makeRow = cells => makeBlock('row', cells);
144
479
  const makeHeaderRow = cells => makeBlock('row', cells, { config: [{ name: 'header', value: true, type: 'boolean' }] });
145
480
  const makeCell = text => makeBlock('cell', { type: 'text', value: text });
146
- // make columns
481
+ // Routing: per-line separator detection (Rule 1) is used only when a
482
+ // line with a visible separator (`|` or `+`) coexists with one that
483
+ // has only whitespace separation — the Scenario 2 case where the
484
+ // legacy positional mask collapses columns. Tables with a uniform
485
+ // separator, or with both visible kinds (pipe + plus) handled by the
486
+ // shared mask, fall back to the legacy positional template, which
487
+ // preserves continuation-line alignment in multi-line rows and keeps
488
+ // byte-for-byte AST/HTML output stable.
489
+ const columnTemplate = makeMask(lines, separators);
490
+ const seenSeparatorKinds = new Set(lines.map(detectLineSeparator));
491
+ const hasVisible = seenSeparatorKinds.has('pipe') || seenSeparatorKinds.has('plus');
492
+ const hasWhitespace = seenSeparatorKinds.has('whitespace');
493
+ const useMixedSplitting = hasVisible && hasWhitespace;
494
+ const splitToCells = (rowValue) => {
495
+ if (useMixedSplitting) {
496
+ const rowLines = rowValue.split(/\r?\n/).filter(l => l.trim() !== '');
497
+ if (rowLines.length <= 1)
498
+ return rowToCells(rowValue);
499
+ }
500
+ return extractColumnsByTemplate(rowValue, columnTemplate);
501
+ };
147
502
  const res = makeTransformer({
148
503
  'row:text': row => {
149
504
  if (textRows.length == 1) {
150
- // split each text row into lines
505
+ // No separator blocks: each line of the only text row becomes its own row
151
506
  const textRowsLines = flattenDeep([row.value].map(splitToLines));
152
- return textRowsLines.map(rowValue => {
153
- const cols = extractColumnsByTemplate(rowValue, columnTemplate);
154
- return makeRow(cols.map(makeCell));
155
- });
507
+ if (useMixedSplitting) {
508
+ return textRowsLines.map(line => makeRow(splitLineCells(line).map(makeCell)));
509
+ }
510
+ return textRowsLines.map(line => makeRow(extractColumnsByTemplate(line, columnTemplate).map(makeCell)));
156
511
  }
157
- const cols = extractColumnsByTemplate(row.value, columnTemplate);
158
- return makeRow(cols.map(makeCell));
159
- },
160
- 'head:text': head => {
161
- const cols = extractColumnsByTemplate(head.value, columnTemplate);
162
- return makeHeaderRow(cols.map(makeCell));
512
+ return makeRow(splitToCells(row.value).map(makeCell));
163
513
  },
514
+ 'head:text': head => makeHeaderRow(splitToCells(head.value).map(makeCell)),
164
515
  })(node);
165
- return res;
516
+ return normalizeCellCounts(res, 'table');
166
517
  },
167
518
  });
168
519
  return transformer(tree, {});
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-tables.js","sourceRoot":"","sources":["../src/plugin-tables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-tables.js","sourceRoot":"","sources":["../src/plugin-tables.ts"],"names":[],"mappings":"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"}