@tabnas/markdown 0.2.0
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/LICENSE +21 -0
- package/README.md +64 -0
- package/dist/markdown.d.ts +30 -0
- package/dist/markdown.js +597 -0
- package/dist/markdown.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +55 -0
- package/src/markdown.ts +714 -0
- package/src/tsconfig.json +15 -0
package/dist/markdown.js
ADDED
|
@@ -0,0 +1,597 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Copyright (c) 2021-2025 Richard Rodger, MIT License */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Markdown = void 0;
|
|
5
|
+
exports.buildMarkdownStringMatcher = buildMarkdownStringMatcher;
|
|
6
|
+
// The engine is the tabnas parser; jsonic supplies the relaxed-JSON
|
|
7
|
+
// grammar that the embedded grammar text is authored in.
|
|
8
|
+
const parser_1 = require("@tabnas/parser");
|
|
9
|
+
const jsonic_1 = require("@tabnas/jsonic");
|
|
10
|
+
// --- BEGIN EMBEDDED markdown-grammar.jsonic ---
|
|
11
|
+
const grammarText = `
|
|
12
|
+
# Markdown Grammar Definition
|
|
13
|
+
# Parsed by a standard Jsonic instance and passed to jsonic.grammar()
|
|
14
|
+
# Function references (@ prefixed) are resolved against the refs map
|
|
15
|
+
#
|
|
16
|
+
# Token naming:
|
|
17
|
+
# #LN - line ending (removed from per-instance IGNORE set)
|
|
18
|
+
# #SP - whitespace (removed from per-instance IGNORE set in strict mode)
|
|
19
|
+
# #CA - comma / field separator
|
|
20
|
+
# #ZZ - end of input
|
|
21
|
+
# #VAL - token set: text, string, number, value literals
|
|
22
|
+
#
|
|
23
|
+
# Rules markdown, newline, record, text are fully defined here.
|
|
24
|
+
# Rules list, elem, val are modified in code (strict mode defines from scratch;
|
|
25
|
+
# non-strict prepends to existing defaults to preserve JSON parsing).
|
|
26
|
+
|
|
27
|
+
{
|
|
28
|
+
rule: markdown: open: [
|
|
29
|
+
{ s: '#ZZ' }
|
|
30
|
+
{ s: '#LN' p: newline c: '@not-record-empty' }
|
|
31
|
+
{ p: record }
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
rule: newline: open: [
|
|
35
|
+
{ s: '#LN #LN' r: newline }
|
|
36
|
+
{ s: '#LN' r: newline }
|
|
37
|
+
{ s: '#ZZ' }
|
|
38
|
+
{ r: record }
|
|
39
|
+
]
|
|
40
|
+
rule: newline: close: [
|
|
41
|
+
{ s: '#LN #LN' r: newline }
|
|
42
|
+
{ s: '#LN' r: newline }
|
|
43
|
+
{ s: '#ZZ' }
|
|
44
|
+
{ r: record }
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
rule: record: open: [
|
|
48
|
+
{ p: list }
|
|
49
|
+
]
|
|
50
|
+
rule: record: close: [
|
|
51
|
+
{ s: '#ZZ' }
|
|
52
|
+
{ s: '#LN #ZZ' b: 1 }
|
|
53
|
+
{ s: '#LN' r: '@record-close-next' }
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
rule: text: open: [
|
|
57
|
+
{ s: ['#VAL' '#SP'] b: 1 r: text n: { text: 1 } g: 'markdown,space,follows' a: '@text-follows' }
|
|
58
|
+
{ s: ['#SP' '#VAL'] r: text n: { text: 1 } g: 'markdown,space,leads' a: '@text-leads' }
|
|
59
|
+
{ s: ['#SP' '#CA #LN #ZZ'] b: 1 n: { text: 1 } g: 'markdown,end' a: '@text-end' }
|
|
60
|
+
{ s: '#SP' n: { text: 1 } g: 'markdown,space' a: '@text-space' p: '@text-space-push' }
|
|
61
|
+
{}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
`;
|
|
65
|
+
// --- END EMBEDDED markdown-grammar.jsonic ---
|
|
66
|
+
// Plugin implementation.
|
|
67
|
+
const Markdown = (tn, options) => {
|
|
68
|
+
// Human descriptions for the tokens, surfaced in railroad diagram legends
|
|
69
|
+
// (read off the live config by @tabnas/railroad). Newline and whitespace are
|
|
70
|
+
// structurally significant (record separator / field text); the JSON
|
|
71
|
+
// brace/bracket tokens only appear inside embedded jsonic field values.
|
|
72
|
+
tn.options({
|
|
73
|
+
config: {
|
|
74
|
+
modify: {
|
|
75
|
+
'markdown-tokendesc': (cfg) => {
|
|
76
|
+
cfg.tokenDesc = Object.assign(cfg.tokenDesc || {}, {
|
|
77
|
+
'#LN': 'newline (ends a record / row)',
|
|
78
|
+
'#SP': 'whitespace (significant: field text)',
|
|
79
|
+
'#OB': 'open brace { (embedded JSON map)',
|
|
80
|
+
'#CB': 'close brace } (embedded JSON map)',
|
|
81
|
+
'#OS': 'open bracket [ (embedded JSON list)',
|
|
82
|
+
'#CS': 'close bracket ] (embedded JSON list)',
|
|
83
|
+
'#CL': 'colon : (key:value in embedded JSON)',
|
|
84
|
+
'KEY': 'embedded JSON map key',
|
|
85
|
+
'VAL': 'field value: text, number, string, or keyword',
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
// Normalize boolean options.
|
|
92
|
+
const strict = !!options.strict;
|
|
93
|
+
const objres = !!options.object;
|
|
94
|
+
const header = !!options.header;
|
|
95
|
+
// These may be changed below by superior options.
|
|
96
|
+
let trim = !!options.trim;
|
|
97
|
+
let comment = !!options.comment;
|
|
98
|
+
let opt_number = !!options.number;
|
|
99
|
+
let opt_value = !!options.value;
|
|
100
|
+
let record_empty = !!options.record?.empty;
|
|
101
|
+
const stream = options.stream;
|
|
102
|
+
// In strict mode, Jsonic field content is not parsed.
|
|
103
|
+
if (strict) {
|
|
104
|
+
if (false !== options.string.markdown) {
|
|
105
|
+
tn.options({
|
|
106
|
+
lex: {
|
|
107
|
+
match: {
|
|
108
|
+
stringmarkdown: { order: 1e5, make: buildMarkdownStringMatcher(options) },
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
tn.options({
|
|
114
|
+
rule: { exclude: 'jsonic,imp' },
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
// Fields may contain Jsonic content.
|
|
118
|
+
else {
|
|
119
|
+
if (true === options.string.markdown) {
|
|
120
|
+
tn.options({
|
|
121
|
+
lex: {
|
|
122
|
+
match: {
|
|
123
|
+
stringmarkdown: { order: 1e5, make: buildMarkdownStringMatcher(options) },
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
trim = null === options.trim ? true : trim;
|
|
129
|
+
comment = null === options.comment ? true : comment;
|
|
130
|
+
opt_number = null === options.number ? true : opt_number;
|
|
131
|
+
opt_value = null === options.value ? true : opt_value;
|
|
132
|
+
tn.options({
|
|
133
|
+
rule: { exclude: 'imp' },
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// Stream rows as they are parsed, do not store in result.
|
|
137
|
+
if (stream) {
|
|
138
|
+
let parser = tn.internal().parser;
|
|
139
|
+
let origStart = parser.start.bind(parser);
|
|
140
|
+
parser.start = ((...args) => {
|
|
141
|
+
try {
|
|
142
|
+
return origStart(...args);
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
stream('error', e);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
let token = {};
|
|
150
|
+
if (strict) {
|
|
151
|
+
// Disable JSON structure tokens
|
|
152
|
+
token = {
|
|
153
|
+
'#OB': null,
|
|
154
|
+
'#CB': null,
|
|
155
|
+
'#OS': null,
|
|
156
|
+
'#CS': null,
|
|
157
|
+
'#CL': null,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
// Custom "comma"
|
|
161
|
+
if (options.field.separation) {
|
|
162
|
+
token['#CA'] = options.field.separation;
|
|
163
|
+
}
|
|
164
|
+
// Jsonic option overrides.
|
|
165
|
+
let jsonicOptions = {
|
|
166
|
+
rule: {
|
|
167
|
+
start: 'markdown',
|
|
168
|
+
},
|
|
169
|
+
fixed: {
|
|
170
|
+
token,
|
|
171
|
+
},
|
|
172
|
+
tokenSet: {
|
|
173
|
+
IGNORE: [
|
|
174
|
+
strict ? null : undefined, // Handle #SP space
|
|
175
|
+
null, // Handle #LN newlines
|
|
176
|
+
undefined, // Still ignore #CM comments
|
|
177
|
+
],
|
|
178
|
+
},
|
|
179
|
+
number: {
|
|
180
|
+
lex: opt_number,
|
|
181
|
+
},
|
|
182
|
+
value: {
|
|
183
|
+
lex: opt_value,
|
|
184
|
+
},
|
|
185
|
+
comment: {
|
|
186
|
+
lex: comment,
|
|
187
|
+
},
|
|
188
|
+
lex: {
|
|
189
|
+
emptyResult: [],
|
|
190
|
+
},
|
|
191
|
+
line: {
|
|
192
|
+
single: record_empty,
|
|
193
|
+
chars: null == options.record.separators
|
|
194
|
+
? undefined
|
|
195
|
+
: options.record.separators,
|
|
196
|
+
rowChars: null == options.record.separators
|
|
197
|
+
? undefined
|
|
198
|
+
: options.record.separators,
|
|
199
|
+
},
|
|
200
|
+
error: {
|
|
201
|
+
markdown_extra_field: 'unexpected extra field value: $fsrc',
|
|
202
|
+
markdown_missing_field: 'missing field',
|
|
203
|
+
},
|
|
204
|
+
hint: {
|
|
205
|
+
markdown_extra_field: `Row $row has too many fields (the first of which is: $fsrc). Only $len
|
|
206
|
+
fields per row are expected.`,
|
|
207
|
+
markdown_missing_field: `Row $row has too few fields. $len fields per row are expected.`,
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
tn.options(jsonicOptions);
|
|
211
|
+
// Named function references for declarative grammar definition.
|
|
212
|
+
const refs = {
|
|
213
|
+
// === State actions (auto-wired by @rulename-{bo,ao,bc,ac} convention) ===
|
|
214
|
+
'@markdown-bo': (r, ctx) => {
|
|
215
|
+
ctx.u.recordI = 0;
|
|
216
|
+
stream && stream('start');
|
|
217
|
+
r.node = [];
|
|
218
|
+
},
|
|
219
|
+
'@markdown-ac': (_r) => {
|
|
220
|
+
stream && stream('end');
|
|
221
|
+
},
|
|
222
|
+
'@record-bc': (r, ctx) => {
|
|
223
|
+
let fields = ctx.u.fields || options.field.names;
|
|
224
|
+
if (0 === ctx.u.recordI && header) {
|
|
225
|
+
ctx.u.fields = undefined === r.child.node ? [] : r.child.node;
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
let record = r.child.node || [];
|
|
229
|
+
if (objres) {
|
|
230
|
+
let obj = {};
|
|
231
|
+
let i = 0;
|
|
232
|
+
if (fields) {
|
|
233
|
+
if (options.field.exact) {
|
|
234
|
+
if (record.length !== fields.length) {
|
|
235
|
+
return ctx.t0.bad(record.length > fields.length
|
|
236
|
+
? 'markdown_extra_field'
|
|
237
|
+
: 'markdown_missing_field');
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
let fI = 0;
|
|
241
|
+
for (; fI < fields.length; fI++) {
|
|
242
|
+
obj[fields[fI]] =
|
|
243
|
+
undefined === record[fI] ? options.field.empty : record[fI];
|
|
244
|
+
}
|
|
245
|
+
i = fI;
|
|
246
|
+
}
|
|
247
|
+
for (; i < record.length; i++) {
|
|
248
|
+
let field_name = options.field.nonameprefix + i;
|
|
249
|
+
obj[field_name] =
|
|
250
|
+
undefined === record[i] ? options.field.empty : record[i];
|
|
251
|
+
}
|
|
252
|
+
record = obj;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
for (let i = 0; i < record.length; i++) {
|
|
256
|
+
record[i] =
|
|
257
|
+
undefined === record[i] ? options.field.empty : record[i];
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
if (stream) {
|
|
261
|
+
stream('record', record);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
r.node.push(record);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
ctx.u.recordI++;
|
|
268
|
+
},
|
|
269
|
+
'@text-bc': (r) => {
|
|
270
|
+
r.parent.node = undefined === r.child.node ? r.node : r.child.node;
|
|
271
|
+
},
|
|
272
|
+
// === Alt actions ===
|
|
273
|
+
'@elem-open-empty': (r) => {
|
|
274
|
+
r.node.push(options.field.empty);
|
|
275
|
+
r.u.done = true;
|
|
276
|
+
},
|
|
277
|
+
'@elem-close-trailing': (r) => {
|
|
278
|
+
r.node.push(options.field.empty);
|
|
279
|
+
},
|
|
280
|
+
'@text-follows': (r) => {
|
|
281
|
+
let v = 1 === r.n.text ? r : r.prev;
|
|
282
|
+
r.node = v.node = (1 === r.n.text ? '' : r.prev.node) + r.o0.val;
|
|
283
|
+
},
|
|
284
|
+
'@text-leads': (r) => {
|
|
285
|
+
let v = 1 === r.n.text ? r : r.prev;
|
|
286
|
+
r.node = v.node =
|
|
287
|
+
(1 === r.n.text ? '' : r.prev.node) +
|
|
288
|
+
(2 <= r.n.text || !trim ? r.o0.src : '') +
|
|
289
|
+
r.o1.src;
|
|
290
|
+
},
|
|
291
|
+
'@text-end': (r) => {
|
|
292
|
+
let v = 1 === r.n.text ? r : r.prev;
|
|
293
|
+
r.node = v.node =
|
|
294
|
+
(1 === r.n.text ? '' : r.prev.node) + (!trim ? r.o0.src : '');
|
|
295
|
+
},
|
|
296
|
+
'@text-space': (r) => {
|
|
297
|
+
if (strict) {
|
|
298
|
+
let v = 1 === r.n.text ? r : r.prev;
|
|
299
|
+
r.node = v.node =
|
|
300
|
+
(1 === r.n.text ? '' : r.prev.node) + (!trim ? r.o0.src : '');
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
// === Condition refs ===
|
|
304
|
+
'@not-record-empty': () => !record_empty,
|
|
305
|
+
// === FuncRef for dynamic rule names ===
|
|
306
|
+
'@record-close-next': () => record_empty ? 'record' : 'newline',
|
|
307
|
+
'@text-space-push': () => strict ? '' : 'val',
|
|
308
|
+
};
|
|
309
|
+
// Usually [#TX, #ST, #NR, #VL]
|
|
310
|
+
let VAL = tn.tokenSet.VAL;
|
|
311
|
+
let { LN, CA, SP, ZZ } = tn.token;
|
|
312
|
+
// Parse embedded grammar definition with a jsonic-grammar Tabnas instance.
|
|
313
|
+
const grammarDef = new parser_1.Tabnas().use(jsonic_1.jsonic).parse(grammarText);
|
|
314
|
+
grammarDef.ref = refs;
|
|
315
|
+
tn.grammar(grammarDef);
|
|
316
|
+
// Rules list, elem, val are modified in code rather than the grammar file,
|
|
317
|
+
// because in non-strict mode the default jsonic alternatives must be
|
|
318
|
+
// preserved to support embedded JSON values like [1,2] and {x:1}.
|
|
319
|
+
//
|
|
320
|
+
// In STRICT mode the rules are rebuilt from scratch (clear()): the new
|
|
321
|
+
// node-building contract makes the jsonic defaults accumulate via child$
|
|
322
|
+
// and the info marker, which flattens records and produces `[object
|
|
323
|
+
// Object]` keys. Each rule then owns its node — allocate in `bo`,
|
|
324
|
+
// coalesce in `bc`. This mirrors the Go port (markdown.go list/elem/val),
|
|
325
|
+
// which already passes against the new core.
|
|
326
|
+
//
|
|
327
|
+
// In NON-STRICT mode the jsonic open/close alternatives are kept (so the
|
|
328
|
+
// embedded JSON structural tokens `[`/`]`/`{`/`}` still parse). The
|
|
329
|
+
// markdown record alternates are prepended (record/field handling wins
|
|
330
|
+
// for top-level rows) with an unconditional `elem`/`val` fallback
|
|
331
|
+
// appended after the jsonic alts (so jsonic's `#OS`/`#CS` etc. are tried
|
|
332
|
+
// first for embedded containers). The corrupting jsonic lifecycle
|
|
333
|
+
// bo/bc actions are replaced with clean, record-aware versions.
|
|
334
|
+
if (strict) {
|
|
335
|
+
tn.rule('list', (rs) => {
|
|
336
|
+
return rs
|
|
337
|
+
.clear()
|
|
338
|
+
// Allocate the record's field array; the parent (record) reads it
|
|
339
|
+
// back from r.child.node in @record-bc.
|
|
340
|
+
.bo((r) => {
|
|
341
|
+
r.node = [];
|
|
342
|
+
})
|
|
343
|
+
.open([
|
|
344
|
+
// If not ignoring empty fields, don't consume LN used to close empty record.
|
|
345
|
+
{ s: [LN], b: 1 },
|
|
346
|
+
// Parse each field as an element.
|
|
347
|
+
{ p: 'elem' },
|
|
348
|
+
])
|
|
349
|
+
.close([
|
|
350
|
+
// LN ends record
|
|
351
|
+
{ s: [LN], b: 1 },
|
|
352
|
+
{ s: [ZZ] },
|
|
353
|
+
]);
|
|
354
|
+
});
|
|
355
|
+
tn.rule('elem', (rs) => {
|
|
356
|
+
return rs
|
|
357
|
+
.clear()
|
|
358
|
+
.open([
|
|
359
|
+
// An empty element (`,` with nothing before it).
|
|
360
|
+
{
|
|
361
|
+
s: [CA],
|
|
362
|
+
b: 1,
|
|
363
|
+
a: (r) => {
|
|
364
|
+
r.node.push(options.field.empty);
|
|
365
|
+
r.u.done = true;
|
|
366
|
+
},
|
|
367
|
+
},
|
|
368
|
+
// Otherwise parse a field value.
|
|
369
|
+
{ p: 'val' },
|
|
370
|
+
])
|
|
371
|
+
.close([
|
|
372
|
+
// An empty element at the end of the line / input.
|
|
373
|
+
{
|
|
374
|
+
s: [CA, [LN, ZZ]],
|
|
375
|
+
b: 1,
|
|
376
|
+
a: (r) => r.node.push(options.field.empty),
|
|
377
|
+
},
|
|
378
|
+
// Next element.
|
|
379
|
+
{ s: [CA], r: 'elem' },
|
|
380
|
+
// LN ends record
|
|
381
|
+
{ s: [LN], b: 1 },
|
|
382
|
+
// ZZ ends input
|
|
383
|
+
{ s: [ZZ] },
|
|
384
|
+
])
|
|
385
|
+
// Push the parsed field value, unless an open alt already handled it
|
|
386
|
+
// (done flag) or there was no value.
|
|
387
|
+
.bc((r) => {
|
|
388
|
+
if (true !== r.u.done && undefined !== r.child.node) {
|
|
389
|
+
r.node.push(r.child.node);
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
});
|
|
393
|
+
tn.rule('val', (rs) => {
|
|
394
|
+
return rs
|
|
395
|
+
.clear()
|
|
396
|
+
// A value rule owns its node; start undefined so bc can tell whether
|
|
397
|
+
// a child / token supplied a value (implicit-null otherwise).
|
|
398
|
+
.bo((r) => {
|
|
399
|
+
r.node = undefined;
|
|
400
|
+
})
|
|
401
|
+
.open([
|
|
402
|
+
// Handle text and space concatenation.
|
|
403
|
+
{ s: [VAL, SP], b: 2, p: 'text' },
|
|
404
|
+
{ s: [SP], b: 1, p: 'text' },
|
|
405
|
+
// A plain value token.
|
|
406
|
+
{ s: [VAL] },
|
|
407
|
+
// LN ends record
|
|
408
|
+
{ s: [LN], b: 1 },
|
|
409
|
+
])
|
|
410
|
+
// Coalesce: child value > matched token > implicit null (undefined).
|
|
411
|
+
.bc((r, ctx) => {
|
|
412
|
+
if (undefined === r.node) {
|
|
413
|
+
if (undefined !== r.child.node) {
|
|
414
|
+
r.node = r.child.node;
|
|
415
|
+
}
|
|
416
|
+
else if (0 !== r.os) {
|
|
417
|
+
r.node = r.o0.resolveVal(r, ctx);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
else {
|
|
424
|
+
// Non-strict: keep the jsonic/json alternatives (embedded containers),
|
|
425
|
+
// layer the markdown record alternates around them.
|
|
426
|
+
tn.rule('list', (rs) => {
|
|
427
|
+
return rs
|
|
428
|
+
// Record context allocates its own clean field array. For an
|
|
429
|
+
// embedded `[...]`, json's @array$ open-alt re-allocates, so this is
|
|
430
|
+
// harmless there. Replace jsonic's list bo (dmap/implist + info
|
|
431
|
+
// marker) which would otherwise corrupt the record node.
|
|
432
|
+
.clearActions('bo', 'bc')
|
|
433
|
+
.bo((r) => {
|
|
434
|
+
r.node = [];
|
|
435
|
+
})
|
|
436
|
+
// Don't consume the LN that closes an (empty) record.
|
|
437
|
+
.open([{ s: [LN], b: 1 }])
|
|
438
|
+
// Fallback: a record field. Appended AFTER the jsonic alts so the
|
|
439
|
+
// embedded `#OS`/`#OS #CS` alts are matched first.
|
|
440
|
+
.open([{ p: 'elem' }], { append: true })
|
|
441
|
+
// LN / ZZ end a record.
|
|
442
|
+
.close([{ s: [LN], b: 1 }])
|
|
443
|
+
.close([{ s: [ZZ] }], { append: true });
|
|
444
|
+
});
|
|
445
|
+
tn.rule('elem', (rs) => {
|
|
446
|
+
return rs
|
|
447
|
+
// Replace jsonic's elem bc (child$ / pair handling) with a clean
|
|
448
|
+
// push so record fields and embedded array elements both land as
|
|
449
|
+
// plain values.
|
|
450
|
+
.clearActions('bc')
|
|
451
|
+
.open([
|
|
452
|
+
// An empty element (`,` with nothing before it).
|
|
453
|
+
{
|
|
454
|
+
s: [CA],
|
|
455
|
+
b: 1,
|
|
456
|
+
a: (r) => {
|
|
457
|
+
r.node.push(options.field.empty);
|
|
458
|
+
r.u.done = true;
|
|
459
|
+
},
|
|
460
|
+
},
|
|
461
|
+
])
|
|
462
|
+
// Fallback: parse a field/element value, after jsonic's alts.
|
|
463
|
+
.open([{ p: 'val' }], { append: true })
|
|
464
|
+
.close([
|
|
465
|
+
// An empty element at the end of the line / input.
|
|
466
|
+
{
|
|
467
|
+
s: [CA, [LN, ZZ]],
|
|
468
|
+
b: 1,
|
|
469
|
+
a: (r) => r.node.push(options.field.empty),
|
|
470
|
+
},
|
|
471
|
+
// LN ends record
|
|
472
|
+
{ s: [LN], b: 1 },
|
|
473
|
+
])
|
|
474
|
+
.bc((r) => {
|
|
475
|
+
if (true !== r.u.done && undefined !== r.child.node) {
|
|
476
|
+
r.node.push(r.child.node);
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
});
|
|
480
|
+
tn.rule('val', (rs) => {
|
|
481
|
+
return rs
|
|
482
|
+
.open([
|
|
483
|
+
// Handle text and space concatenation.
|
|
484
|
+
{ s: [VAL, SP], b: 2, p: 'text' },
|
|
485
|
+
{ s: [SP], b: 1, p: 'text' },
|
|
486
|
+
// LN ends record
|
|
487
|
+
{ s: [LN], b: 1 },
|
|
488
|
+
]);
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
// Close is called on final rule - set parent val node
|
|
492
|
+
tn.rule('text', (rs) => {
|
|
493
|
+
rs.bc((r) => {
|
|
494
|
+
r.parent.node = undefined === r.child.node ? r.node : r.child.node;
|
|
495
|
+
});
|
|
496
|
+
});
|
|
497
|
+
};
|
|
498
|
+
exports.Markdown = Markdown;
|
|
499
|
+
// Custom Markdown String matcher.
|
|
500
|
+
// Handles "a""b" -> "a"b" quoting wierdness.
|
|
501
|
+
// This is a reduced copy of the standard Jsonic string matcher.
|
|
502
|
+
function buildMarkdownStringMatcher(mdopts) {
|
|
503
|
+
return function makeMarkdownStringMatcher(cfg, _opts) {
|
|
504
|
+
return function markdownStringMatcher(lex) {
|
|
505
|
+
let quoteMap = { [mdopts.string.quote]: true };
|
|
506
|
+
let { pnt, src } = lex;
|
|
507
|
+
let { sI, rI, cI } = pnt;
|
|
508
|
+
let srclen = src.length;
|
|
509
|
+
if (quoteMap[src[sI]]) {
|
|
510
|
+
const q = src[sI]; // Quote character
|
|
511
|
+
const qI = sI;
|
|
512
|
+
const qrI = rI;
|
|
513
|
+
++sI;
|
|
514
|
+
++cI;
|
|
515
|
+
let s = [];
|
|
516
|
+
for (sI; sI < srclen; sI++) {
|
|
517
|
+
cI++;
|
|
518
|
+
let c = src[sI];
|
|
519
|
+
// Quote char.
|
|
520
|
+
if (q === c) {
|
|
521
|
+
sI++;
|
|
522
|
+
cI++;
|
|
523
|
+
if (q === src[sI]) {
|
|
524
|
+
s.push(q);
|
|
525
|
+
}
|
|
526
|
+
else {
|
|
527
|
+
break; // String finished.
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
// Body part of string.
|
|
531
|
+
else {
|
|
532
|
+
let bI = sI;
|
|
533
|
+
let qc = q.charCodeAt(0);
|
|
534
|
+
let cc = src.charCodeAt(sI);
|
|
535
|
+
while (sI < srclen && 32 <= cc && qc !== cc) {
|
|
536
|
+
cc = src.charCodeAt(++sI);
|
|
537
|
+
cI++;
|
|
538
|
+
}
|
|
539
|
+
cI--;
|
|
540
|
+
if (cfg.line.chars[src[sI]]) {
|
|
541
|
+
if (cfg.line.rowChars[src[sI]]) {
|
|
542
|
+
pnt.rI = ++rI;
|
|
543
|
+
}
|
|
544
|
+
cI = 1;
|
|
545
|
+
s.push(src.substring(bI, sI + 1));
|
|
546
|
+
}
|
|
547
|
+
else if (cc < 32) {
|
|
548
|
+
pnt.sI = sI;
|
|
549
|
+
pnt.cI = cI;
|
|
550
|
+
return lex.bad('unprintable', sI, sI + 1);
|
|
551
|
+
}
|
|
552
|
+
else {
|
|
553
|
+
s.push(src.substring(bI, sI));
|
|
554
|
+
sI--;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
if (src[sI - 1] !== q || pnt.sI === sI - 1) {
|
|
559
|
+
pnt.rI = qrI;
|
|
560
|
+
return lex.bad('unterminated_string', qI, sI);
|
|
561
|
+
}
|
|
562
|
+
const tkn = lex.token('#ST', s.join(''), src.substring(pnt.sI, sI), pnt);
|
|
563
|
+
pnt.sI = sI;
|
|
564
|
+
pnt.rI = rI;
|
|
565
|
+
pnt.cI = cI;
|
|
566
|
+
return tkn;
|
|
567
|
+
}
|
|
568
|
+
};
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
// Default option values.
|
|
572
|
+
Markdown.defaults = {
|
|
573
|
+
trim: null,
|
|
574
|
+
comment: null,
|
|
575
|
+
number: null,
|
|
576
|
+
value: null,
|
|
577
|
+
header: true,
|
|
578
|
+
object: true,
|
|
579
|
+
stream: null,
|
|
580
|
+
strict: true,
|
|
581
|
+
field: {
|
|
582
|
+
separation: null,
|
|
583
|
+
nonameprefix: 'field~',
|
|
584
|
+
empty: '',
|
|
585
|
+
names: undefined,
|
|
586
|
+
exact: false,
|
|
587
|
+
},
|
|
588
|
+
record: {
|
|
589
|
+
separators: null,
|
|
590
|
+
empty: false,
|
|
591
|
+
},
|
|
592
|
+
string: {
|
|
593
|
+
quote: '"',
|
|
594
|
+
markdown: null,
|
|
595
|
+
},
|
|
596
|
+
};
|
|
597
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/markdown.ts"],"version":"6.0.3"}
|