@longform/longform 0.0.7 → 0.0.8

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/README.md CHANGED
@@ -53,3 +53,31 @@ console.log(result.root);
53
53
  console.log(result.fragments.fragment1.html);
54
54
  ```
55
55
 
56
+
57
+ ## Custom directives
58
+
59
+ This parser has limited support for custom directives with unstable support.
60
+
61
+ ```
62
+ const directives: DirectiveDef = {
63
+ 'foo:bar': {
64
+ beforeRender(ctx) {
65
+ // do stuff
66
+ },
67
+ },
68
+ };
69
+
70
+ const doc = `
71
+ @foo:bar:: arguments...
72
+ div::
73
+ ...
74
+ `;
75
+
76
+ const res = longform(doc, { directives });
77
+
78
+ ```
79
+
80
+ The `beforeRender()` directive hook is optional (albeit the only directive hook currently)
81
+ and is called before the element is rendered. The `ctx` object holds document and element
82
+ information. Currently only the `attrs` can be modified before the element is rendered.
83
+
package/dist/longform.cjs CHANGED
@@ -11,7 +11,7 @@ const sniffTestRe = /^((?: )*)(?:(@)([a-z][a-z\-]*(?::[a-z][a-z\-]*)?)(?:(?:::
11
11
  , outer = /([a-z][\w\-]*(?::[a-z][\w\-]*)?)((?:(?:[^:])|(?::(?!:)))*)::(?: (?:({{?)|(.*)))?/gi
12
12
  //, outer = /([a-z][\w\-]*(?::[a-z][\w\-]*)?)(.+?(?=::))?(?: (?:({{?)|(.*)))?/gi
13
13
  // captures each id, class and attribute declaration in an element
14
- , inner = /(?:\.([a-z][\w\-]+)|#([a-z][\w\-]+)|\[([a-z][a-z\-]+(?::[a-z][a-z|\-]*)?)(?:=(?:"([^"]+)"|'([^']+)'|([^\]]+)))?\])/gi, attribute1 = /((?:\ \ )+)\[(\w[\w-]*(?::\w[\w-]*)?)(?:=([^\n]+))?\]/, preformattedClose = /[ \t]*}}?[ \t]*/, id1 = /((?:\ \ )+)?#(#)?([\w\-]+)(?: ([\["]))?/gmi, idnt1 = /^(\ \ )+/, text1 = /^((?:\ \ )+)([^ \n][^\n]*)$/i, refRe = /#\[([\w\-]+)\]/g, escapeRe = /([&<>"'#\[\]{}])/g, templateLinesRe = /^(\ \ )?([^\n]+)$/gmi
14
+ , inner = /(?:\.([a-z][\w\-]+)|#([a-z][\w\-]+)|\[([a-z][a-z\-]+(?::[a-z][a-z|\-]*)?)(?:=(?:"([^"]+)"|'([^']+)'|([^\]]+)))?\])/gi, attribute1 = /((?:\ \ )+)\[(\w[\w-]*(?::\w[\w-]*)?)(?:=([^\n]+))?\]/, preformattedClose = /[ \t]*}}?[ \t]*/, id1 = /((?:\ \ )+)?#(#)?([\w\-]+)(?: ([\["]))?/gmi, identRe = /^(\ \ )+/, text1 = /^((?:\ \ )+)([^ \n][^\n]*)$/i, refRe = /#\[([\w\-]+)\]/g, escapeRe = /([&<>"'#\[\]{}])/g, templateLinesRe = /^(\ \ )?([^\n]+)$/gmi
15
15
  // TODO: Benchmark v Array.includes()
16
16
  , voids = new Set(['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wrb']);
17
17
  let m1, m2, m3;
@@ -35,9 +35,17 @@ function escape(value) {
35
35
  function makeElement(indent = 0) {
36
36
  return {
37
37
  indent,
38
- html: '',
38
+ key: undefined,
39
+ id: undefined,
40
+ tag: undefined,
41
+ class: undefined,
42
+ text: undefined,
39
43
  attrs: {},
44
+ html: '',
45
+ mount: undefined,
46
+ serializerConfig: undefined,
40
47
  chain: undefined,
48
+ beforeRender: undefined,
41
49
  };
42
50
  }
43
51
  function makeFragment(type = 'bare') {
@@ -51,28 +59,100 @@ function makeFragment(type = 'bare') {
51
59
  mountPoints: [],
52
60
  };
53
61
  }
62
+ class Doc {
63
+ id = undefined;
64
+ lang = undefined;
65
+ meta = {};
66
+ #serializerConfig;
67
+ constructor(id, lang, allowAll, allowedAttributes, allowedElements) {
68
+ this.id = id;
69
+ this.lang = lang;
70
+ this.#serializerConfig = {
71
+ allowAll: allowAll ?? false,
72
+ allowedAttributes: allowedAttributes ?? [],
73
+ allowedElements: {},
74
+ };
75
+ if (allowedElements != null) {
76
+ for (let i = 0, l = allowedElements.length, el = allowedElements[i]; i < l; i++) {
77
+ if (typeof el === 'string') {
78
+ this.#serializerConfig.allowedElements[el] = {
79
+ tag: el,
80
+ attrs: [],
81
+ };
82
+ }
83
+ else {
84
+ this.#serializerConfig.allowedElements[el.tag] = el;
85
+ }
86
+ }
87
+ }
88
+ Object.freeze(this);
89
+ }
90
+ allowAll() {
91
+ }
92
+ allowAttributes() {
93
+ }
94
+ allowElements() {
95
+ }
96
+ }
97
+ const directiveValidator = /^[a-z][a-z\-]*\:[a-z][a-z\-]*$/gi;
54
98
  /**
55
99
  * Parses a longform document into a object containing the root and fragments
56
100
  * in the output format.
57
101
  *
58
- * @param {string} doc - The longform document to parse.
59
- * @returns {ParsedResult}
102
+ * @param input - The Longform document to parse.
103
+ * @param args - Arguments for the Longform parser.
60
104
  */
61
- function longform(doc, debug = () => { }) {
105
+ function longform(input, args) {
62
106
  let textIndent = null, verbatimSerialize = true, verbatimIndent = null, verbatimFirst = false, element = makeElement(), fragment = makeFragment()
63
107
  // the root fragment
64
- , root = null;
108
+ , root = null, id, lang, doc;
65
109
  // ids of claimed fragments
66
110
  const claimed = new Set()
67
111
  // parsed fragments
68
- , parsed = new Map(), output = Object.create(null);
112
+ , parsed = new Map(), output = Object.create(null), directives = {};
69
113
  output.fragments = Object.create(null);
70
114
  output.templates = Object.create(null);
115
+ if (args?.directives != null) {
116
+ const entries = Object.entries(args.directives);
117
+ for (let i = 0, l = entries.length; i < l; i++) {
118
+ if (!directiveValidator.test(entries[i][0])) {
119
+ console.warn(`Invalid custom directive name '${entries[i][0]}'`);
120
+ continue;
121
+ }
122
+ directives[entries[i][0]] = entries[i][1];
123
+ }
124
+ }
71
125
  /**
72
126
  * Closes any current in progress element definition
73
127
  * and creates a new working element.
74
128
  */
75
129
  function applyIndent(targetIndent) {
130
+ if (Array.isArray(element.beforeRender)) {
131
+ const el = {
132
+ id: element.id,
133
+ tag: element.tag,
134
+ class: element.class,
135
+ attrs: element.attrs,
136
+ };
137
+ const chain = [];
138
+ for (let i = 0, l = element.chain.length, el = element.chain[i]; i < l; i++) {
139
+ chain.push({
140
+ id: el.id,
141
+ tag: el.tag,
142
+ class: el.class,
143
+ attrs: el.attrs,
144
+ });
145
+ }
146
+ for (let i = 0, l = element.beforeRender.length, def = element.beforeRender[i]; i < l; i++) {
147
+ def.beforeRender({
148
+ el,
149
+ chain,
150
+ doc,
151
+ inlineArg: def.inlineArg,
152
+ blockArg: def.blockArg,
153
+ });
154
+ }
155
+ }
76
156
  if (element.tag != null) {
77
157
  const root = fragment.type === 'range'
78
158
  ? targetIndent < 2
@@ -146,7 +226,6 @@ function longform(doc, debug = () => { }) {
146
226
  fragment.html += `</${element?.tag}>`;
147
227
  }
148
228
  if (targetIndent === 0) {
149
- debug(0, '<', fragment.type, fragment.id);
150
229
  if (fragment.template) {
151
230
  output.templates[fragment.id] = fragment.html;
152
231
  }
@@ -163,7 +242,7 @@ function longform(doc, debug = () => { }) {
163
242
  element = makeElement(targetIndent);
164
243
  }
165
244
  }
166
- while ((m1 = sniffTestRe.exec(doc))) {
245
+ main: while ((m1 = sniffTestRe.exec(input))) {
167
246
  if (m1[1] === '--') {
168
247
  continue;
169
248
  }
@@ -176,14 +255,13 @@ function longform(doc, debug = () => { }) {
176
255
  // by ending the declaration with `:: {`.
177
256
  if (verbatimIndent != null) {
178
257
  // inside a script or preformatted block
179
- idnt1.lastIndex = 0;
180
- m2 = idnt1.exec(m1[0]);
258
+ identRe.lastIndex = 0;
259
+ m2 = identRe.exec(m1[0]);
181
260
  const indent = m2 == null
182
261
  ? null
183
262
  : m2[0].length / 2;
184
263
  if (m2 == null || indent <= verbatimIndent) {
185
264
  fragment.html += '\n';
186
- debug(indent, '}', m2?.[0]);
187
265
  applyIndent(indent);
188
266
  verbatimIndent = null;
189
267
  verbatimFirst = false;
@@ -194,7 +272,6 @@ function longform(doc, debug = () => { }) {
194
272
  }
195
273
  else {
196
274
  const line = m1[0].replace(' '.repeat(verbatimIndent + 1), '');
197
- debug(indent, '{', line);
198
275
  if (element.tag != null) {
199
276
  applyIndent(indent);
200
277
  }
@@ -216,6 +293,23 @@ function longform(doc, debug = () => { }) {
216
293
  if (m1[LINE].trim() === '') {
217
294
  continue;
218
295
  }
296
+ // The id and lang directives should proceed all other directives and
297
+ // fragment declarations.
298
+ if (doc === undefined) {
299
+ const inlineArgs = m1[DIRECTIVE_INLINE_ARGS] ?? '';
300
+ switch (m1[DIRECTIVE]) {
301
+ case 'id': {
302
+ // TODO: Add id validation
303
+ id = inlineArgs.trim();
304
+ continue main;
305
+ }
306
+ case 'lang': {
307
+ lang = inlineArgs.trim();
308
+ continue main;
309
+ }
310
+ }
311
+ doc = new Doc(id, lang, args?.allowAll, args?.allowedAttributes, args?.allowedElements);
312
+ }
219
313
  switch (m1[DIRECTIVE_KEY] ?? m1[ID_TYPE] ?? m1[ELEMENT] ?? m1[ATTR]) {
220
314
  case '#':
221
315
  case '##': {
@@ -266,7 +360,7 @@ function longform(doc, debug = () => { }) {
266
360
  let indented = false;
267
361
  fragment.template = indent === 0;
268
362
  templateLinesRe.lastIndex = sniffTestRe.lastIndex;
269
- while ((m2 = templateLinesRe.exec(doc))) {
363
+ while ((m2 = templateLinesRe.exec(input))) {
270
364
  if (m2[1] == null && !indented && fragment.id == null) {
271
365
  id1.lastIndex = 0;
272
366
  m3 = id1.exec(m2[0]);
@@ -298,6 +392,24 @@ function longform(doc, debug = () => { }) {
298
392
  element.mount = m1[DIRECTIVE_INLINE_ARGS].trim();
299
393
  break;
300
394
  }
395
+ default: {
396
+ const def = directives[m1[DIRECTIVE]];
397
+ if (def == null)
398
+ break;
399
+ if (typeof def.beforeRender === 'function') {
400
+ if (element.id != null) {
401
+ applyIndent(indent);
402
+ }
403
+ if (element.beforeRender == null)
404
+ element.beforeRender = [];
405
+ // TODO: Parse block args
406
+ const applied = {
407
+ ...def,
408
+ inlineArg: m1[DIRECTIVE_INLINE_ARGS],
409
+ };
410
+ element.beforeRender.push(applied);
411
+ }
412
+ }
301
413
  }
302
414
  break;
303
415
  }
@@ -405,7 +517,6 @@ function longform(doc, debug = () => { }) {
405
517
  ? attribute1.exec(m1[LINE])
406
518
  : undefined;
407
519
  if (m2 != null && element.tag != null) {
408
- debug('a', m2[2], m2[3]);
409
520
  if (m2[2] === 'id') {
410
521
  if (element.id == null) {
411
522
  element.id = m2[3].trim();
@@ -435,7 +546,6 @@ function longform(doc, debug = () => { }) {
435
546
  }
436
547
  const indent = m2[1].length / 2;
437
548
  const tx = m2[2].trim();
438
- debug(indent, 't', m2[2]);
439
549
  if (element.tag != null) {
440
550
  applyIndent(indent);
441
551
  fragment.html += tx;
@@ -531,6 +641,8 @@ function longform(doc, debug = () => { }) {
531
641
  html: fragment.html,
532
642
  };
533
643
  }
644
+ output.id = doc?.id;
645
+ output.lang = doc?.lang;
534
646
  return output;
535
647
  }
536
648
  const templateRe = /(?:#{([\w][\w\-_]*)})|(?:#\[([\w][\w\-_]+)\])/g;
@@ -1 +1 @@
1
- {"version":3,"file":"longform.cjs","sources":["../lib/lib/mod.js/longform.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"longform.cjs","sources":["../lib/lib/mod.js/longform.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import type { ParsedResult } from "./types.ts";
1
+ import type { LongformArgs, ParsedResult } from "./types.ts";
2
2
  /**
3
3
  * Parses a longform document into a object containing the root and fragments
4
4
  * in the output format.
5
5
  *
6
- * @param {string} doc - The longform document to parse.
7
- * @returns {ParsedResult}
6
+ * @param input - The Longform document to parse.
7
+ * @param args - Arguments for the Longform parser.
8
8
  */
9
- export declare function longform(doc: string, debug?: (...d: unknown[]) => void): ParsedResult;
9
+ export declare function longform(input: string, args?: LongformArgs): ParsedResult;
10
10
  /**
11
11
  * Processes a client side Longform template to HTML fragment string.
12
12
  *
package/dist/longform.js CHANGED
@@ -9,7 +9,7 @@ const sniffTestRe = /^((?: )*)(?:(@)([a-z][a-z\-]*(?::[a-z][a-z\-]*)?)(?:(?:::
9
9
  , outer = /([a-z][\w\-]*(?::[a-z][\w\-]*)?)((?:(?:[^:])|(?::(?!:)))*)::(?: (?:({{?)|(.*)))?/gi
10
10
  //, outer = /([a-z][\w\-]*(?::[a-z][\w\-]*)?)(.+?(?=::))?(?: (?:({{?)|(.*)))?/gi
11
11
  // captures each id, class and attribute declaration in an element
12
- , inner = /(?:\.([a-z][\w\-]+)|#([a-z][\w\-]+)|\[([a-z][a-z\-]+(?::[a-z][a-z|\-]*)?)(?:=(?:"([^"]+)"|'([^']+)'|([^\]]+)))?\])/gi, attribute1 = /((?:\ \ )+)\[(\w[\w-]*(?::\w[\w-]*)?)(?:=([^\n]+))?\]/, preformattedClose = /[ \t]*}}?[ \t]*/, id1 = /((?:\ \ )+)?#(#)?([\w\-]+)(?: ([\["]))?/gmi, idnt1 = /^(\ \ )+/, text1 = /^((?:\ \ )+)([^ \n][^\n]*)$/i, refRe = /#\[([\w\-]+)\]/g, escapeRe = /([&<>"'#\[\]{}])/g, templateLinesRe = /^(\ \ )?([^\n]+)$/gmi
12
+ , inner = /(?:\.([a-z][\w\-]+)|#([a-z][\w\-]+)|\[([a-z][a-z\-]+(?::[a-z][a-z|\-]*)?)(?:=(?:"([^"]+)"|'([^']+)'|([^\]]+)))?\])/gi, attribute1 = /((?:\ \ )+)\[(\w[\w-]*(?::\w[\w-]*)?)(?:=([^\n]+))?\]/, preformattedClose = /[ \t]*}}?[ \t]*/, id1 = /((?:\ \ )+)?#(#)?([\w\-]+)(?: ([\["]))?/gmi, identRe = /^(\ \ )+/, text1 = /^((?:\ \ )+)([^ \n][^\n]*)$/i, refRe = /#\[([\w\-]+)\]/g, escapeRe = /([&<>"'#\[\]{}])/g, templateLinesRe = /^(\ \ )?([^\n]+)$/gmi
13
13
  // TODO: Benchmark v Array.includes()
14
14
  , voids = new Set(['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wrb']);
15
15
  let m1, m2, m3;
@@ -33,9 +33,17 @@ function escape(value) {
33
33
  function makeElement(indent = 0) {
34
34
  return {
35
35
  indent,
36
- html: '',
36
+ key: undefined,
37
+ id: undefined,
38
+ tag: undefined,
39
+ class: undefined,
40
+ text: undefined,
37
41
  attrs: {},
42
+ html: '',
43
+ mount: undefined,
44
+ serializerConfig: undefined,
38
45
  chain: undefined,
46
+ beforeRender: undefined,
39
47
  };
40
48
  }
41
49
  function makeFragment(type = 'bare') {
@@ -49,28 +57,100 @@ function makeFragment(type = 'bare') {
49
57
  mountPoints: [],
50
58
  };
51
59
  }
60
+ class Doc {
61
+ id = undefined;
62
+ lang = undefined;
63
+ meta = {};
64
+ #serializerConfig;
65
+ constructor(id, lang, allowAll, allowedAttributes, allowedElements) {
66
+ this.id = id;
67
+ this.lang = lang;
68
+ this.#serializerConfig = {
69
+ allowAll: allowAll ?? false,
70
+ allowedAttributes: allowedAttributes ?? [],
71
+ allowedElements: {},
72
+ };
73
+ if (allowedElements != null) {
74
+ for (let i = 0, l = allowedElements.length, el = allowedElements[i]; i < l; i++) {
75
+ if (typeof el === 'string') {
76
+ this.#serializerConfig.allowedElements[el] = {
77
+ tag: el,
78
+ attrs: [],
79
+ };
80
+ }
81
+ else {
82
+ this.#serializerConfig.allowedElements[el.tag] = el;
83
+ }
84
+ }
85
+ }
86
+ Object.freeze(this);
87
+ }
88
+ allowAll() {
89
+ }
90
+ allowAttributes() {
91
+ }
92
+ allowElements() {
93
+ }
94
+ }
95
+ const directiveValidator = /^[a-z][a-z\-]*\:[a-z][a-z\-]*$/gi;
52
96
  /**
53
97
  * Parses a longform document into a object containing the root and fragments
54
98
  * in the output format.
55
99
  *
56
- * @param {string} doc - The longform document to parse.
57
- * @returns {ParsedResult}
100
+ * @param input - The Longform document to parse.
101
+ * @param args - Arguments for the Longform parser.
58
102
  */
59
- function longform(doc, debug = () => { }) {
103
+ function longform(input, args) {
60
104
  let textIndent = null, verbatimSerialize = true, verbatimIndent = null, verbatimFirst = false, element = makeElement(), fragment = makeFragment()
61
105
  // the root fragment
62
- , root = null;
106
+ , root = null, id, lang, doc;
63
107
  // ids of claimed fragments
64
108
  const claimed = new Set()
65
109
  // parsed fragments
66
- , parsed = new Map(), output = Object.create(null);
110
+ , parsed = new Map(), output = Object.create(null), directives = {};
67
111
  output.fragments = Object.create(null);
68
112
  output.templates = Object.create(null);
113
+ if (args?.directives != null) {
114
+ const entries = Object.entries(args.directives);
115
+ for (let i = 0, l = entries.length; i < l; i++) {
116
+ if (!directiveValidator.test(entries[i][0])) {
117
+ console.warn(`Invalid custom directive name '${entries[i][0]}'`);
118
+ continue;
119
+ }
120
+ directives[entries[i][0]] = entries[i][1];
121
+ }
122
+ }
69
123
  /**
70
124
  * Closes any current in progress element definition
71
125
  * and creates a new working element.
72
126
  */
73
127
  function applyIndent(targetIndent) {
128
+ if (Array.isArray(element.beforeRender)) {
129
+ const el = {
130
+ id: element.id,
131
+ tag: element.tag,
132
+ class: element.class,
133
+ attrs: element.attrs,
134
+ };
135
+ const chain = [];
136
+ for (let i = 0, l = element.chain.length, el = element.chain[i]; i < l; i++) {
137
+ chain.push({
138
+ id: el.id,
139
+ tag: el.tag,
140
+ class: el.class,
141
+ attrs: el.attrs,
142
+ });
143
+ }
144
+ for (let i = 0, l = element.beforeRender.length, def = element.beforeRender[i]; i < l; i++) {
145
+ def.beforeRender({
146
+ el,
147
+ chain,
148
+ doc,
149
+ inlineArg: def.inlineArg,
150
+ blockArg: def.blockArg,
151
+ });
152
+ }
153
+ }
74
154
  if (element.tag != null) {
75
155
  const root = fragment.type === 'range'
76
156
  ? targetIndent < 2
@@ -144,7 +224,6 @@ function longform(doc, debug = () => { }) {
144
224
  fragment.html += `</${element?.tag}>`;
145
225
  }
146
226
  if (targetIndent === 0) {
147
- debug(0, '<', fragment.type, fragment.id);
148
227
  if (fragment.template) {
149
228
  output.templates[fragment.id] = fragment.html;
150
229
  }
@@ -161,7 +240,7 @@ function longform(doc, debug = () => { }) {
161
240
  element = makeElement(targetIndent);
162
241
  }
163
242
  }
164
- while ((m1 = sniffTestRe.exec(doc))) {
243
+ main: while ((m1 = sniffTestRe.exec(input))) {
165
244
  if (m1[1] === '--') {
166
245
  continue;
167
246
  }
@@ -174,14 +253,13 @@ function longform(doc, debug = () => { }) {
174
253
  // by ending the declaration with `:: {`.
175
254
  if (verbatimIndent != null) {
176
255
  // inside a script or preformatted block
177
- idnt1.lastIndex = 0;
178
- m2 = idnt1.exec(m1[0]);
256
+ identRe.lastIndex = 0;
257
+ m2 = identRe.exec(m1[0]);
179
258
  const indent = m2 == null
180
259
  ? null
181
260
  : m2[0].length / 2;
182
261
  if (m2 == null || indent <= verbatimIndent) {
183
262
  fragment.html += '\n';
184
- debug(indent, '}', m2?.[0]);
185
263
  applyIndent(indent);
186
264
  verbatimIndent = null;
187
265
  verbatimFirst = false;
@@ -192,7 +270,6 @@ function longform(doc, debug = () => { }) {
192
270
  }
193
271
  else {
194
272
  const line = m1[0].replace(' '.repeat(verbatimIndent + 1), '');
195
- debug(indent, '{', line);
196
273
  if (element.tag != null) {
197
274
  applyIndent(indent);
198
275
  }
@@ -214,6 +291,23 @@ function longform(doc, debug = () => { }) {
214
291
  if (m1[LINE].trim() === '') {
215
292
  continue;
216
293
  }
294
+ // The id and lang directives should proceed all other directives and
295
+ // fragment declarations.
296
+ if (doc === undefined) {
297
+ const inlineArgs = m1[DIRECTIVE_INLINE_ARGS] ?? '';
298
+ switch (m1[DIRECTIVE]) {
299
+ case 'id': {
300
+ // TODO: Add id validation
301
+ id = inlineArgs.trim();
302
+ continue main;
303
+ }
304
+ case 'lang': {
305
+ lang = inlineArgs.trim();
306
+ continue main;
307
+ }
308
+ }
309
+ doc = new Doc(id, lang, args?.allowAll, args?.allowedAttributes, args?.allowedElements);
310
+ }
217
311
  switch (m1[DIRECTIVE_KEY] ?? m1[ID_TYPE] ?? m1[ELEMENT] ?? m1[ATTR]) {
218
312
  case '#':
219
313
  case '##': {
@@ -264,7 +358,7 @@ function longform(doc, debug = () => { }) {
264
358
  let indented = false;
265
359
  fragment.template = indent === 0;
266
360
  templateLinesRe.lastIndex = sniffTestRe.lastIndex;
267
- while ((m2 = templateLinesRe.exec(doc))) {
361
+ while ((m2 = templateLinesRe.exec(input))) {
268
362
  if (m2[1] == null && !indented && fragment.id == null) {
269
363
  id1.lastIndex = 0;
270
364
  m3 = id1.exec(m2[0]);
@@ -296,6 +390,24 @@ function longform(doc, debug = () => { }) {
296
390
  element.mount = m1[DIRECTIVE_INLINE_ARGS].trim();
297
391
  break;
298
392
  }
393
+ default: {
394
+ const def = directives[m1[DIRECTIVE]];
395
+ if (def == null)
396
+ break;
397
+ if (typeof def.beforeRender === 'function') {
398
+ if (element.id != null) {
399
+ applyIndent(indent);
400
+ }
401
+ if (element.beforeRender == null)
402
+ element.beforeRender = [];
403
+ // TODO: Parse block args
404
+ const applied = {
405
+ ...def,
406
+ inlineArg: m1[DIRECTIVE_INLINE_ARGS],
407
+ };
408
+ element.beforeRender.push(applied);
409
+ }
410
+ }
299
411
  }
300
412
  break;
301
413
  }
@@ -403,7 +515,6 @@ function longform(doc, debug = () => { }) {
403
515
  ? attribute1.exec(m1[LINE])
404
516
  : undefined;
405
517
  if (m2 != null && element.tag != null) {
406
- debug('a', m2[2], m2[3]);
407
518
  if (m2[2] === 'id') {
408
519
  if (element.id == null) {
409
520
  element.id = m2[3].trim();
@@ -433,7 +544,6 @@ function longform(doc, debug = () => { }) {
433
544
  }
434
545
  const indent = m2[1].length / 2;
435
546
  const tx = m2[2].trim();
436
- debug(indent, 't', m2[2]);
437
547
  if (element.tag != null) {
438
548
  applyIndent(indent);
439
549
  fragment.html += tx;
@@ -529,6 +639,8 @@ function longform(doc, debug = () => { }) {
529
639
  html: fragment.html,
530
640
  };
531
641
  }
642
+ output.id = doc?.id;
643
+ output.lang = doc?.lang;
532
644
  return output;
533
645
  }
534
646
  const templateRe = /(?:#{([\w][\w\-_]*)})|(?:#\[([\w][\w\-_]+)\])/g;
Binary file
Binary file