@longform/longform 0.0.7 → 0.0.9

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
@@ -7,13 +7,9 @@ const sniffTestRe = /^((?: )*)(?:(@)([a-z][a-z\-]*(?::[a-z][a-z\-]*)?)(?:(?:::
7
7
  // if in chained situation the regexp will need to be looped over for each element
8
8
  // we know the element is the last if the final capture group has a positive match
9
9
  // or if the line is consumed by the regexp.
10
- //, outer = /([a-z][\w\-]*(?::[a-z][\w\-]*)?)([^:]+)*::(?: (?:({{?)|(.*)))?/gi
11
10
  , outer = /([a-z][\w\-]*(?::[a-z][\w\-]*)?)((?:(?:[^:])|(?::(?!:)))*)::(?: (?:({{?)|(.*)))?/gi
12
- //, outer = /([a-z][\w\-]*(?::[a-z][\w\-]*)?)(.+?(?=::))?(?: (?:({{?)|(.*)))?/gi
13
11
  // 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
15
- // TODO: Benchmark v Array.includes()
16
- , voids = new Set(['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wrb']);
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, templateRe = /\#\{(@)?([a-z][\w\-]*(?::[a-z][\w\-]*))}/g, voids = new Set(['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wrb']);
17
13
  let m1, m2, m3;
18
14
  const entities = {
19
15
  '&': '&amp;',
@@ -35,9 +31,17 @@ function escape(value) {
35
31
  function makeElement(indent = 0) {
36
32
  return {
37
33
  indent,
38
- html: '',
34
+ key: undefined,
35
+ id: undefined,
36
+ tag: undefined,
37
+ class: undefined,
38
+ text: undefined,
39
39
  attrs: {},
40
+ html: '',
41
+ mount: undefined,
42
+ serializerConfig: undefined,
40
43
  chain: undefined,
44
+ beforeRender: undefined,
41
45
  };
42
46
  }
43
47
  function makeFragment(type = 'bare') {
@@ -51,28 +55,100 @@ function makeFragment(type = 'bare') {
51
55
  mountPoints: [],
52
56
  };
53
57
  }
58
+ class Doc {
59
+ id = undefined;
60
+ lang = undefined;
61
+ meta = {};
62
+ #serializerConfig;
63
+ constructor(id, lang, allowAll, allowedAttributes, allowedElements) {
64
+ this.id = id;
65
+ this.lang = lang;
66
+ this.#serializerConfig = {
67
+ allowAll: allowAll ?? false,
68
+ allowedAttributes: allowedAttributes ?? [],
69
+ allowedElements: {},
70
+ };
71
+ if (allowedElements != null) {
72
+ for (let i = 0, l = allowedElements.length, el = allowedElements[i]; i < l; i++) {
73
+ if (typeof el === 'string') {
74
+ this.#serializerConfig.allowedElements[el] = {
75
+ tag: el,
76
+ attrs: [],
77
+ };
78
+ }
79
+ else {
80
+ this.#serializerConfig.allowedElements[el.tag] = el;
81
+ }
82
+ }
83
+ }
84
+ Object.freeze(this);
85
+ }
86
+ allowAll() {
87
+ }
88
+ allowAttributes() {
89
+ }
90
+ allowElements() {
91
+ }
92
+ }
93
+ const directiveValidator = /^[a-z][a-z\-]*\:[a-z][a-z\-]*$/gi;
54
94
  /**
55
95
  * Parses a longform document into a object containing the root and fragments
56
96
  * in the output format.
57
97
  *
58
- * @param {string} doc - The longform document to parse.
59
- * @returns {ParsedResult}
98
+ * @param input - The Longform document to parse.
99
+ * @param args - Arguments for the Longform parser.
60
100
  */
61
- function longform(doc, debug = () => { }) {
101
+ function longform(input, args) {
62
102
  let textIndent = null, verbatimSerialize = true, verbatimIndent = null, verbatimFirst = false, element = makeElement(), fragment = makeFragment()
63
103
  // the root fragment
64
- , root = null;
104
+ , root = null, id, lang, doc;
65
105
  // ids of claimed fragments
66
106
  const claimed = new Set()
67
107
  // parsed fragments
68
- , parsed = new Map(), output = Object.create(null);
108
+ , parsed = new Map(), output = Object.create(null), directives = {};
69
109
  output.fragments = Object.create(null);
70
110
  output.templates = Object.create(null);
111
+ if (args?.directives != null) {
112
+ const entries = Object.entries(args.directives);
113
+ for (let i = 0, l = entries.length; i < l; i++) {
114
+ if (!directiveValidator.test(entries[i][0])) {
115
+ console.warn(`Invalid custom directive name '${entries[i][0]}'`);
116
+ continue;
117
+ }
118
+ directives[entries[i][0]] = entries[i][1];
119
+ }
120
+ }
71
121
  /**
72
122
  * Closes any current in progress element definition
73
123
  * and creates a new working element.
74
124
  */
75
125
  function applyIndent(targetIndent) {
126
+ if (Array.isArray(element.beforeRender)) {
127
+ const el = {
128
+ id: element.id,
129
+ tag: element.tag,
130
+ class: element.class,
131
+ attrs: element.attrs,
132
+ };
133
+ const chain = [];
134
+ for (let i = 0, l = element.chain.length, el = element.chain[i]; i < l; i++) {
135
+ chain.push({
136
+ id: el.id,
137
+ tag: el.tag,
138
+ class: el.class,
139
+ attrs: el.attrs,
140
+ });
141
+ }
142
+ for (let i = 0, l = element.beforeRender.length, def = element.beforeRender[i]; i < l; i++) {
143
+ def.beforeRender({
144
+ el,
145
+ chain,
146
+ doc,
147
+ inlineArg: def.inlineArg,
148
+ blockArg: def.blockArg,
149
+ });
150
+ }
151
+ }
76
152
  if (element.tag != null) {
77
153
  const root = fragment.type === 'range'
78
154
  ? targetIndent < 2
@@ -146,7 +222,6 @@ function longform(doc, debug = () => { }) {
146
222
  fragment.html += `</${element?.tag}>`;
147
223
  }
148
224
  if (targetIndent === 0) {
149
- debug(0, '<', fragment.type, fragment.id);
150
225
  if (fragment.template) {
151
226
  output.templates[fragment.id] = fragment.html;
152
227
  }
@@ -163,7 +238,7 @@ function longform(doc, debug = () => { }) {
163
238
  element = makeElement(targetIndent);
164
239
  }
165
240
  }
166
- while ((m1 = sniffTestRe.exec(doc))) {
241
+ main: while ((m1 = sniffTestRe.exec(input))) {
167
242
  if (m1[1] === '--') {
168
243
  continue;
169
244
  }
@@ -176,14 +251,13 @@ function longform(doc, debug = () => { }) {
176
251
  // by ending the declaration with `:: {`.
177
252
  if (verbatimIndent != null) {
178
253
  // inside a script or preformatted block
179
- idnt1.lastIndex = 0;
180
- m2 = idnt1.exec(m1[0]);
254
+ identRe.lastIndex = 0;
255
+ m2 = identRe.exec(m1[0]);
181
256
  const indent = m2 == null
182
257
  ? null
183
258
  : m2[0].length / 2;
184
259
  if (m2 == null || indent <= verbatimIndent) {
185
260
  fragment.html += '\n';
186
- debug(indent, '}', m2?.[0]);
187
261
  applyIndent(indent);
188
262
  verbatimIndent = null;
189
263
  verbatimFirst = false;
@@ -194,7 +268,6 @@ function longform(doc, debug = () => { }) {
194
268
  }
195
269
  else {
196
270
  const line = m1[0].replace(' '.repeat(verbatimIndent + 1), '');
197
- debug(indent, '{', line);
198
271
  if (element.tag != null) {
199
272
  applyIndent(indent);
200
273
  }
@@ -216,6 +289,23 @@ function longform(doc, debug = () => { }) {
216
289
  if (m1[LINE].trim() === '') {
217
290
  continue;
218
291
  }
292
+ // The id and lang directives should proceed all other directives and
293
+ // fragment declarations.
294
+ if (doc === undefined) {
295
+ const inlineArgs = m1[DIRECTIVE_INLINE_ARGS] ?? '';
296
+ switch (m1[DIRECTIVE]) {
297
+ case 'id': {
298
+ // TODO: Add id validation
299
+ id = inlineArgs.trim();
300
+ continue main;
301
+ }
302
+ case 'lang': {
303
+ lang = inlineArgs.trim();
304
+ continue main;
305
+ }
306
+ }
307
+ doc = new Doc(id, lang, args?.allowAll, args?.allowedAttributes, args?.allowedElements);
308
+ }
219
309
  switch (m1[DIRECTIVE_KEY] ?? m1[ID_TYPE] ?? m1[ELEMENT] ?? m1[ATTR]) {
220
310
  case '#':
221
311
  case '##': {
@@ -266,7 +356,7 @@ function longform(doc, debug = () => { }) {
266
356
  let indented = false;
267
357
  fragment.template = indent === 0;
268
358
  templateLinesRe.lastIndex = sniffTestRe.lastIndex;
269
- while ((m2 = templateLinesRe.exec(doc))) {
359
+ while ((m2 = templateLinesRe.exec(input))) {
270
360
  if (m2[1] == null && !indented && fragment.id == null) {
271
361
  id1.lastIndex = 0;
272
362
  m3 = id1.exec(m2[0]);
@@ -298,6 +388,24 @@ function longform(doc, debug = () => { }) {
298
388
  element.mount = m1[DIRECTIVE_INLINE_ARGS].trim();
299
389
  break;
300
390
  }
391
+ default: {
392
+ const def = directives[m1[DIRECTIVE]];
393
+ if (def == null)
394
+ break;
395
+ if (typeof def.beforeRender === 'function') {
396
+ if (element.id != null) {
397
+ applyIndent(indent);
398
+ }
399
+ if (element.beforeRender == null)
400
+ element.beforeRender = [];
401
+ // TODO: Parse block args
402
+ const applied = {
403
+ ...def,
404
+ inlineArg: m1[DIRECTIVE_INLINE_ARGS],
405
+ };
406
+ element.beforeRender.push(applied);
407
+ }
408
+ }
301
409
  }
302
410
  break;
303
411
  }
@@ -405,7 +513,6 @@ function longform(doc, debug = () => { }) {
405
513
  ? attribute1.exec(m1[LINE])
406
514
  : undefined;
407
515
  if (m2 != null && element.tag != null) {
408
- debug('a', m2[2], m2[3]);
409
516
  if (m2[2] === 'id') {
410
517
  if (element.id == null) {
411
518
  element.id = m2[3].trim();
@@ -435,7 +542,6 @@ function longform(doc, debug = () => { }) {
435
542
  }
436
543
  const indent = m2[1].length / 2;
437
544
  const tx = m2[2].trim();
438
- debug(indent, 't', m2[2]);
439
545
  if (element.tag != null) {
440
546
  applyIndent(indent);
441
547
  fragment.html += tx;
@@ -531,9 +637,10 @@ function longform(doc, debug = () => { }) {
531
637
  html: fragment.html,
532
638
  };
533
639
  }
640
+ output.id = doc?.id;
641
+ output.lang = doc?.lang;
534
642
  return output;
535
643
  }
536
- const templateRe = /(?:#{([\w][\w\-_]*)})|(?:#\[([\w][\w\-_]+)\])/g;
537
644
  /**
538
645
  * Processes a client side Longform template to HTML fragment string.
539
646
  *
@@ -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
@@ -5,13 +5,9 @@ const sniffTestRe = /^((?: )*)(?:(@)([a-z][a-z\-]*(?::[a-z][a-z\-]*)?)(?:(?:::
5
5
  // if in chained situation the regexp will need to be looped over for each element
6
6
  // we know the element is the last if the final capture group has a positive match
7
7
  // or if the line is consumed by the regexp.
8
- //, outer = /([a-z][\w\-]*(?::[a-z][\w\-]*)?)([^:]+)*::(?: (?:({{?)|(.*)))?/gi
9
8
  , outer = /([a-z][\w\-]*(?::[a-z][\w\-]*)?)((?:(?:[^:])|(?::(?!:)))*)::(?: (?:({{?)|(.*)))?/gi
10
- //, outer = /([a-z][\w\-]*(?::[a-z][\w\-]*)?)(.+?(?=::))?(?: (?:({{?)|(.*)))?/gi
11
9
  // 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
13
- // TODO: Benchmark v Array.includes()
14
- , voids = new Set(['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wrb']);
10
+ , 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, templateRe = /\#\{(@)?([a-z][\w\-]*(?::[a-z][\w\-]*))}/g, voids = new Set(['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wrb']);
15
11
  let m1, m2, m3;
16
12
  const entities = {
17
13
  '&': '&amp;',
@@ -33,9 +29,17 @@ function escape(value) {
33
29
  function makeElement(indent = 0) {
34
30
  return {
35
31
  indent,
36
- html: '',
32
+ key: undefined,
33
+ id: undefined,
34
+ tag: undefined,
35
+ class: undefined,
36
+ text: undefined,
37
37
  attrs: {},
38
+ html: '',
39
+ mount: undefined,
40
+ serializerConfig: undefined,
38
41
  chain: undefined,
42
+ beforeRender: undefined,
39
43
  };
40
44
  }
41
45
  function makeFragment(type = 'bare') {
@@ -49,28 +53,100 @@ function makeFragment(type = 'bare') {
49
53
  mountPoints: [],
50
54
  };
51
55
  }
56
+ class Doc {
57
+ id = undefined;
58
+ lang = undefined;
59
+ meta = {};
60
+ #serializerConfig;
61
+ constructor(id, lang, allowAll, allowedAttributes, allowedElements) {
62
+ this.id = id;
63
+ this.lang = lang;
64
+ this.#serializerConfig = {
65
+ allowAll: allowAll ?? false,
66
+ allowedAttributes: allowedAttributes ?? [],
67
+ allowedElements: {},
68
+ };
69
+ if (allowedElements != null) {
70
+ for (let i = 0, l = allowedElements.length, el = allowedElements[i]; i < l; i++) {
71
+ if (typeof el === 'string') {
72
+ this.#serializerConfig.allowedElements[el] = {
73
+ tag: el,
74
+ attrs: [],
75
+ };
76
+ }
77
+ else {
78
+ this.#serializerConfig.allowedElements[el.tag] = el;
79
+ }
80
+ }
81
+ }
82
+ Object.freeze(this);
83
+ }
84
+ allowAll() {
85
+ }
86
+ allowAttributes() {
87
+ }
88
+ allowElements() {
89
+ }
90
+ }
91
+ const directiveValidator = /^[a-z][a-z\-]*\:[a-z][a-z\-]*$/gi;
52
92
  /**
53
93
  * Parses a longform document into a object containing the root and fragments
54
94
  * in the output format.
55
95
  *
56
- * @param {string} doc - The longform document to parse.
57
- * @returns {ParsedResult}
96
+ * @param input - The Longform document to parse.
97
+ * @param args - Arguments for the Longform parser.
58
98
  */
59
- function longform(doc, debug = () => { }) {
99
+ function longform(input, args) {
60
100
  let textIndent = null, verbatimSerialize = true, verbatimIndent = null, verbatimFirst = false, element = makeElement(), fragment = makeFragment()
61
101
  // the root fragment
62
- , root = null;
102
+ , root = null, id, lang, doc;
63
103
  // ids of claimed fragments
64
104
  const claimed = new Set()
65
105
  // parsed fragments
66
- , parsed = new Map(), output = Object.create(null);
106
+ , parsed = new Map(), output = Object.create(null), directives = {};
67
107
  output.fragments = Object.create(null);
68
108
  output.templates = Object.create(null);
109
+ if (args?.directives != null) {
110
+ const entries = Object.entries(args.directives);
111
+ for (let i = 0, l = entries.length; i < l; i++) {
112
+ if (!directiveValidator.test(entries[i][0])) {
113
+ console.warn(`Invalid custom directive name '${entries[i][0]}'`);
114
+ continue;
115
+ }
116
+ directives[entries[i][0]] = entries[i][1];
117
+ }
118
+ }
69
119
  /**
70
120
  * Closes any current in progress element definition
71
121
  * and creates a new working element.
72
122
  */
73
123
  function applyIndent(targetIndent) {
124
+ if (Array.isArray(element.beforeRender)) {
125
+ const el = {
126
+ id: element.id,
127
+ tag: element.tag,
128
+ class: element.class,
129
+ attrs: element.attrs,
130
+ };
131
+ const chain = [];
132
+ for (let i = 0, l = element.chain.length, el = element.chain[i]; i < l; i++) {
133
+ chain.push({
134
+ id: el.id,
135
+ tag: el.tag,
136
+ class: el.class,
137
+ attrs: el.attrs,
138
+ });
139
+ }
140
+ for (let i = 0, l = element.beforeRender.length, def = element.beforeRender[i]; i < l; i++) {
141
+ def.beforeRender({
142
+ el,
143
+ chain,
144
+ doc,
145
+ inlineArg: def.inlineArg,
146
+ blockArg: def.blockArg,
147
+ });
148
+ }
149
+ }
74
150
  if (element.tag != null) {
75
151
  const root = fragment.type === 'range'
76
152
  ? targetIndent < 2
@@ -144,7 +220,6 @@ function longform(doc, debug = () => { }) {
144
220
  fragment.html += `</${element?.tag}>`;
145
221
  }
146
222
  if (targetIndent === 0) {
147
- debug(0, '<', fragment.type, fragment.id);
148
223
  if (fragment.template) {
149
224
  output.templates[fragment.id] = fragment.html;
150
225
  }
@@ -161,7 +236,7 @@ function longform(doc, debug = () => { }) {
161
236
  element = makeElement(targetIndent);
162
237
  }
163
238
  }
164
- while ((m1 = sniffTestRe.exec(doc))) {
239
+ main: while ((m1 = sniffTestRe.exec(input))) {
165
240
  if (m1[1] === '--') {
166
241
  continue;
167
242
  }
@@ -174,14 +249,13 @@ function longform(doc, debug = () => { }) {
174
249
  // by ending the declaration with `:: {`.
175
250
  if (verbatimIndent != null) {
176
251
  // inside a script or preformatted block
177
- idnt1.lastIndex = 0;
178
- m2 = idnt1.exec(m1[0]);
252
+ identRe.lastIndex = 0;
253
+ m2 = identRe.exec(m1[0]);
179
254
  const indent = m2 == null
180
255
  ? null
181
256
  : m2[0].length / 2;
182
257
  if (m2 == null || indent <= verbatimIndent) {
183
258
  fragment.html += '\n';
184
- debug(indent, '}', m2?.[0]);
185
259
  applyIndent(indent);
186
260
  verbatimIndent = null;
187
261
  verbatimFirst = false;
@@ -192,7 +266,6 @@ function longform(doc, debug = () => { }) {
192
266
  }
193
267
  else {
194
268
  const line = m1[0].replace(' '.repeat(verbatimIndent + 1), '');
195
- debug(indent, '{', line);
196
269
  if (element.tag != null) {
197
270
  applyIndent(indent);
198
271
  }
@@ -214,6 +287,23 @@ function longform(doc, debug = () => { }) {
214
287
  if (m1[LINE].trim() === '') {
215
288
  continue;
216
289
  }
290
+ // The id and lang directives should proceed all other directives and
291
+ // fragment declarations.
292
+ if (doc === undefined) {
293
+ const inlineArgs = m1[DIRECTIVE_INLINE_ARGS] ?? '';
294
+ switch (m1[DIRECTIVE]) {
295
+ case 'id': {
296
+ // TODO: Add id validation
297
+ id = inlineArgs.trim();
298
+ continue main;
299
+ }
300
+ case 'lang': {
301
+ lang = inlineArgs.trim();
302
+ continue main;
303
+ }
304
+ }
305
+ doc = new Doc(id, lang, args?.allowAll, args?.allowedAttributes, args?.allowedElements);
306
+ }
217
307
  switch (m1[DIRECTIVE_KEY] ?? m1[ID_TYPE] ?? m1[ELEMENT] ?? m1[ATTR]) {
218
308
  case '#':
219
309
  case '##': {
@@ -264,7 +354,7 @@ function longform(doc, debug = () => { }) {
264
354
  let indented = false;
265
355
  fragment.template = indent === 0;
266
356
  templateLinesRe.lastIndex = sniffTestRe.lastIndex;
267
- while ((m2 = templateLinesRe.exec(doc))) {
357
+ while ((m2 = templateLinesRe.exec(input))) {
268
358
  if (m2[1] == null && !indented && fragment.id == null) {
269
359
  id1.lastIndex = 0;
270
360
  m3 = id1.exec(m2[0]);
@@ -296,6 +386,24 @@ function longform(doc, debug = () => { }) {
296
386
  element.mount = m1[DIRECTIVE_INLINE_ARGS].trim();
297
387
  break;
298
388
  }
389
+ default: {
390
+ const def = directives[m1[DIRECTIVE]];
391
+ if (def == null)
392
+ break;
393
+ if (typeof def.beforeRender === 'function') {
394
+ if (element.id != null) {
395
+ applyIndent(indent);
396
+ }
397
+ if (element.beforeRender == null)
398
+ element.beforeRender = [];
399
+ // TODO: Parse block args
400
+ const applied = {
401
+ ...def,
402
+ inlineArg: m1[DIRECTIVE_INLINE_ARGS],
403
+ };
404
+ element.beforeRender.push(applied);
405
+ }
406
+ }
299
407
  }
300
408
  break;
301
409
  }
@@ -403,7 +511,6 @@ function longform(doc, debug = () => { }) {
403
511
  ? attribute1.exec(m1[LINE])
404
512
  : undefined;
405
513
  if (m2 != null && element.tag != null) {
406
- debug('a', m2[2], m2[3]);
407
514
  if (m2[2] === 'id') {
408
515
  if (element.id == null) {
409
516
  element.id = m2[3].trim();
@@ -433,7 +540,6 @@ function longform(doc, debug = () => { }) {
433
540
  }
434
541
  const indent = m2[1].length / 2;
435
542
  const tx = m2[2].trim();
436
- debug(indent, 't', m2[2]);
437
543
  if (element.tag != null) {
438
544
  applyIndent(indent);
439
545
  fragment.html += tx;
@@ -529,9 +635,10 @@ function longform(doc, debug = () => { }) {
529
635
  html: fragment.html,
530
636
  };
531
637
  }
638
+ output.id = doc?.id;
639
+ output.lang = doc?.lang;
532
640
  return output;
533
641
  }
534
- const templateRe = /(?:#{([\w][\w\-_]*)})|(?:#\[([\w][\w\-_]+)\])/g;
535
642
  /**
536
643
  * Processes a client side Longform template to HTML fragment string.
537
644
  *
Binary file