@t8/docsgen 0.1.38 → 0.1.40

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