@slidev/parser 52.15.1 → 52.15.2

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.
Files changed (2) hide show
  1. package/dist/core.mjs +32 -4
  2. package/package.json +2 -2
package/dist/core.mjs CHANGED
@@ -206,6 +206,22 @@ const RE_MERMAID_CODEBLOCK = /^```mermaid/m;
206
206
  const RE_HEADING = /^(#+) (.*)$/m;
207
207
  const RE_LEADING_BACKTICKS = /^\s*`+/;
208
208
  const RE_CRLF = /\r?\n/g;
209
+ function advanceHtmlCommentState(line, inHtmlComment) {
210
+ let cursor = 0;
211
+ while (cursor < line.length) if (inHtmlComment) {
212
+ const end = line.indexOf("-->", cursor);
213
+ if (end < 0) return true;
214
+ inHtmlComment = false;
215
+ cursor = end + 3;
216
+ } else {
217
+ const start = line.indexOf("<!--", cursor);
218
+ if (start < 0) return false;
219
+ const end = line.indexOf("-->", start + 4);
220
+ if (end < 0) return true;
221
+ cursor = end + 3;
222
+ }
223
+ return inHtmlComment;
224
+ }
209
225
  function stringify(data) {
210
226
  return `${data.slides.map(stringifySlide).join("\n").trim()}\n`;
211
227
  }
@@ -321,6 +337,7 @@ async function parse(markdown, filepath, extensions, options = {}) {
321
337
  const slides = [];
322
338
  let start = 0;
323
339
  let contentStart = 0;
340
+ let inHtmlComment = false;
324
341
  async function slice(end) {
325
342
  if (start === end) return;
326
343
  const slide = {
@@ -351,7 +368,12 @@ async function parse(markdown, filepath, extensions, options = {}) {
351
368
  for (const e of extensions) if (e.transformRawLines) await e.transformRawLines(lines);
352
369
  }
353
370
  for (let i = 0; i < lines.length; i++) {
354
- const line = lines[i].trimEnd();
371
+ const rawLine = lines[i];
372
+ const line = rawLine.trimEnd();
373
+ if (inHtmlComment) {
374
+ inHtmlComment = advanceHtmlCommentState(rawLine, true);
375
+ continue;
376
+ }
355
377
  if (line.startsWith("---")) {
356
378
  await slice(i);
357
379
  const next = lines[i + 1];
@@ -365,7 +387,7 @@ async function parse(markdown, filepath, extensions, options = {}) {
365
387
  let j = i + 1;
366
388
  for (; j < lines.length; j++) if (lines[j].startsWith(codeBlockLevel)) break;
367
389
  if (j !== lines.length) i = j;
368
- }
390
+ } else inHtmlComment = advanceHtmlCommentState(rawLine, false);
369
391
  }
370
392
  if (start <= lines.length - 1) await slice(lines.length);
371
393
  return {
@@ -379,6 +401,7 @@ function parseSync(markdown, filepath, options = {}) {
379
401
  const slides = [];
380
402
  let start = 0;
381
403
  let contentStart = 0;
404
+ let inHtmlComment = false;
382
405
  function slice(end) {
383
406
  if (start === end) return;
384
407
  const slide = {
@@ -394,7 +417,12 @@ function parseSync(markdown, filepath, options = {}) {
394
417
  contentStart = end + 1;
395
418
  }
396
419
  for (let i = 0; i < lines.length; i++) {
397
- const line = lines[i].trimEnd();
420
+ const rawLine = lines[i];
421
+ const line = rawLine.trimEnd();
422
+ if (inHtmlComment) {
423
+ inHtmlComment = advanceHtmlCommentState(rawLine, true);
424
+ continue;
425
+ }
398
426
  if (line.startsWith("---")) {
399
427
  slice(i);
400
428
  const next = lines[i + 1];
@@ -408,7 +436,7 @@ function parseSync(markdown, filepath, options = {}) {
408
436
  let j = i + 1;
409
437
  for (; j < lines.length; j++) if (lines[j].startsWith(codeBlockLevel)) break;
410
438
  if (j !== lines.length) i = j;
411
- }
439
+ } else inHtmlComment = advanceHtmlCommentState(rawLine, false);
412
440
  }
413
441
  if (start <= lines.length - 1) slice(lines.length);
414
442
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slidev/parser",
3
- "version": "52.15.1",
3
+ "version": "52.15.2",
4
4
  "description": "Markdown parser for Slidev",
5
5
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "dependencies": {
32
32
  "@antfu/utils": "^9.3.0",
33
33
  "yaml": "^2.8.3",
34
- "@slidev/types": "52.15.1"
34
+ "@slidev/types": "52.15.2"
35
35
  },
36
36
  "scripts": {
37
37
  "build": "tsdown",