@t8/docsgen 0.1.37 → 0.1.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/dist/bin.js CHANGED
@@ -368,20 +368,24 @@ async function getNav(ctx, navItems) {
368
368
  }
369
369
  navContent = navDom.innerHTML;
370
370
  }
371
- if (navItems.length > 1) {
372
- for (let { id, title, items } of navItems) {
373
- s += `
374
- <li data-id="${id}"><a href="${root}${contentDir}/${id}">${title}</a>`;
375
- if (items.length !== 0) {
376
- s += "\n <ul>";
377
- for (let { title: title2 } of items) s += `
378
- <li>${title2}</li>`;
379
- s += "\n </ul>\n";
371
+ let navItemCount = 0;
372
+ for (let { id, title, items } of navItems) {
373
+ let itemLink = `${root}${contentDir}/${encodeURIComponent(id)}`;
374
+ s += `
375
+ <li data-id="${id}"><a href="${itemLink}">${title}</a>`;
376
+ if (items.length !== 0) {
377
+ s += "\n <ul>";
378
+ for (let { id: id2, title: title2 } of items) {
379
+ s += `
380
+ <li><a href="${itemLink}#${encodeURIComponent(id2)}">${title2}</a></li>`;
381
+ navItemCount++;
380
382
  }
381
- s += "</li>";
383
+ s += "\n </ul>\n";
382
384
  }
385
+ s += "</li>";
386
+ navItemCount++;
383
387
  }
384
- if (!s && !navContent) return "";
388
+ if ((!s || navItemCount < 2) && !navContent) return "";
385
389
  s = s.trim() ? `<section><ul>${s}
386
390
  </ul></section>` : "";
387
391
  let repoLink = getRepoLink(ctx);
@@ -429,44 +433,48 @@ function buildNav(ctx, dom) {
429
433
  let navItem = null;
430
434
  let nav = [];
431
435
  if (singlePage)
432
- nav.push({
436
+ navItem = {
433
437
  id: "Overview",
434
438
  title: "Overview",
435
439
  items: []
436
- });
437
- else {
438
- let headings = dom.window.document.body.querySelectorAll("h2, h3, h4, h5, h6");
439
- for (let element of headings) {
440
- let tagName = element.tagName.toLowerCase();
441
- let isSectionTitle = tagName === "h2";
442
- let isSubsectionTitle = tagName === "h3";
443
- let sectionId = isSectionTitle ? getSlug(element.textContent) : navItem?.id ?? "";
444
- let elementId = element.id;
445
- if (!elementId)
446
- elementId = getSlug(element.textContent).toLowerCase().replace(/_/g, "-");
447
- if (elementId) {
448
- element.id = elementId;
449
- let link = `${root}${contentDir}/${sectionId}`;
450
- if (!isSectionTitle) link += `#${elementId}`;
451
- linkMap[`#${elementId}`] = link;
452
- }
453
- if (isSectionTitle) {
454
- if (navItem) nav.push(navItem);
455
- navItem = {
440
+ };
441
+ let headings = dom.window.document.body.querySelectorAll("h2, h3, h4, h5, h6");
442
+ for (let element of headings) {
443
+ let tagName = element.tagName.toLowerCase();
444
+ let isSectionTitle = tagName === "h2";
445
+ let isSubsectionTitle = tagName === "h3";
446
+ let sectionId = isSectionTitle ? getSlug(element.textContent) : navItem?.id ?? "";
447
+ let elementId = element.id;
448
+ if (!elementId)
449
+ elementId = getSlug(element.textContent).toLowerCase().replace(/_/g, "-");
450
+ if (elementId) {
451
+ element.id = elementId;
452
+ let link = `${root}${contentDir}/${sectionId}`;
453
+ if (!isSectionTitle) link += `#${elementId}`;
454
+ linkMap[`#${elementId}`] = link;
455
+ }
456
+ if (singlePage && isSectionTitle) {
457
+ if (navItem)
458
+ navItem.items.push({
456
459
  id: getSlug(element.textContent),
457
- title: element.innerHTML.trim(),
458
- items: []
459
- };
460
- } else if (isSubsectionTitle) {
461
- if (navItem)
462
- navItem.items.push({
463
- id: getSlug(element.textContent),
464
- title: element.innerHTML.trim()
465
- });
466
- }
460
+ title: element.innerHTML.trim()
461
+ });
462
+ } else if (isSectionTitle) {
463
+ if (navItem) nav.push(navItem);
464
+ navItem = {
465
+ id: getSlug(element.textContent),
466
+ title: element.innerHTML.trim(),
467
+ items: []
468
+ };
469
+ } else if (isSubsectionTitle) {
470
+ if (navItem)
471
+ navItem.items.push({
472
+ id: getSlug(element.textContent),
473
+ title: element.innerHTML.trim()
474
+ });
467
475
  }
468
- if (navItem) nav.push(navItem);
469
476
  }
477
+ if (navItem) nav.push(navItem);
470
478
  return {
471
479
  nav,
472
480
  linkMap
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t8/docsgen",
3
- "version": "0.1.37",
3
+ "version": "0.1.39",
4
4
  "description": "",
5
5
  "main": "dist/bin.js",
6
6
  "bin": {
package/src/bin/getNav.ts CHANGED
@@ -30,23 +30,29 @@ export async function getNav(ctx: Context, navItems: NavItem[]) {
30
30
  navContent = navDom.innerHTML;
31
31
  }
32
32
 
33
- if (navItems.length > 1) {
34
- for (let { id, title, items } of navItems) {
35
- s += `\n<li data-id="${id}"><a href="${root}${contentDir}/${id}">${title}</a>`;
33
+ let navItemCount = 0;
36
34
 
37
- if (items.length !== 0) {
38
- s += "\n <ul>";
35
+ for (let { id, title, items } of navItems) {
36
+ let itemLink = `${root}${contentDir}/${encodeURIComponent(id)}`;
39
37
 
40
- for (let { title } of items) s += `\n <li>${title}</li>`;
38
+ s += `\n<li data-id="${id}"><a href="${itemLink}">${title}</a>`;
41
39
 
42
- s += "\n </ul>\n";
40
+ if (items.length !== 0) {
41
+ s += "\n <ul>";
42
+
43
+ for (let { id, title } of items) {
44
+ s += `\n <li><a href="${itemLink}#${encodeURIComponent(id)}">${title}</a></li>`;
45
+ navItemCount++;
43
46
  }
44
47
 
45
- s += "</li>";
48
+ s += "\n </ul>\n";
46
49
  }
50
+
51
+ s += "</li>";
52
+ navItemCount++;
47
53
  }
48
54
 
49
- if (!s && !navContent) return "";
55
+ if ((!s || navItemCount < 2) && !navContent) return "";
50
56
 
51
57
  s = s.trim() ? `<section><ul>${s}\n</ul></section>` : "";
52
58
 
@@ -22,61 +22,66 @@ function buildNav(ctx: Context, dom: JSDOM) {
22
22
  let nav: NavItem[] = [];
23
23
 
24
24
  if (singlePage)
25
- nav.push({
25
+ navItem = {
26
26
  id: "Overview",
27
27
  title: "Overview",
28
28
  items: [],
29
- });
30
- else {
31
- let headings =
32
- dom.window.document.body.querySelectorAll("h2, h3, h4, h5, h6");
29
+ };
33
30
 
34
- for (let element of headings) {
35
- let tagName = element.tagName.toLowerCase();
31
+ let headings =
32
+ dom.window.document.body.querySelectorAll("h2, h3, h4, h5, h6");
36
33
 
37
- let isSectionTitle = tagName === "h2";
38
- let isSubsectionTitle = tagName === "h3";
34
+ for (let element of headings) {
35
+ let tagName = element.tagName.toLowerCase();
39
36
 
40
- let sectionId = isSectionTitle
41
- ? getSlug(element.textContent)
42
- : (navItem?.id ?? "");
43
- let elementId = element.id;
37
+ let isSectionTitle = tagName === "h2";
38
+ let isSubsectionTitle = tagName === "h3";
44
39
 
45
- if (!elementId)
46
- elementId = getSlug(element.textContent)
47
- .toLowerCase()
48
- .replace(/_/g, "-");
40
+ let sectionId = isSectionTitle
41
+ ? getSlug(element.textContent)
42
+ : (navItem?.id ?? "");
43
+ let elementId = element.id;
49
44
 
50
- if (elementId) {
51
- element.id = elementId;
45
+ if (!elementId)
46
+ elementId = getSlug(element.textContent)
47
+ .toLowerCase()
48
+ .replace(/_/g, "-");
52
49
 
53
- let link = `${root}${contentDir}/${sectionId}`;
50
+ if (elementId) {
51
+ element.id = elementId;
54
52
 
55
- if (!isSectionTitle) link += `#${elementId}`;
53
+ let link = `${root}${contentDir}/${sectionId}`;
56
54
 
57
- linkMap[`#${elementId}`] = link;
58
- }
55
+ if (!isSectionTitle) link += `#${elementId}`;
59
56
 
60
- if (isSectionTitle) {
61
- if (navItem) nav.push(navItem);
57
+ linkMap[`#${elementId}`] = link;
58
+ }
62
59
 
63
- navItem = {
60
+ if (singlePage && isSectionTitle) {
61
+ if (navItem)
62
+ navItem.items.push({
64
63
  id: getSlug(element.textContent),
65
64
  title: element.innerHTML.trim(),
66
- items: [],
67
- };
68
- } else if (isSubsectionTitle) {
69
- if (navItem)
70
- navItem.items.push({
71
- id: getSlug(element.textContent),
72
- title: element.innerHTML.trim(),
73
- });
74
- }
65
+ });
66
+ } else if (isSectionTitle) {
67
+ if (navItem) nav.push(navItem);
68
+
69
+ navItem = {
70
+ id: getSlug(element.textContent),
71
+ title: element.innerHTML.trim(),
72
+ items: [],
73
+ };
74
+ } else if (isSubsectionTitle) {
75
+ if (navItem)
76
+ navItem.items.push({
77
+ id: getSlug(element.textContent),
78
+ title: element.innerHTML.trim(),
79
+ });
75
80
  }
76
-
77
- if (navItem) nav.push(navItem);
78
81
  }
79
82
 
83
+ if (navItem) nav.push(navItem);
84
+
80
85
  return {
81
86
  nav,
82
87
  linkMap,