@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 +51 -43
- package/package.json +1 -1
- package/src/bin/getNav.ts +15 -9
- package/src/bin/getParsedContent.ts +42 -37
package/dist/bin.js
CHANGED
|
@@ -368,20 +368,24 @@ async function getNav(ctx, navItems) {
|
|
|
368
368
|
}
|
|
369
369
|
navContent = navDom.innerHTML;
|
|
370
370
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
s +=
|
|
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 += "</
|
|
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
|
-
|
|
436
|
+
navItem = {
|
|
433
437
|
id: "Overview",
|
|
434
438
|
title: "Overview",
|
|
435
439
|
items: []
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
if (
|
|
454
|
-
|
|
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
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
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
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
|
-
|
|
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
|
-
|
|
38
|
-
|
|
35
|
+
for (let { id, title, items } of navItems) {
|
|
36
|
+
let itemLink = `${root}${contentDir}/${encodeURIComponent(id)}`;
|
|
39
37
|
|
|
40
|
-
|
|
38
|
+
s += `\n<li data-id="${id}"><a href="${itemLink}">${title}</a>`;
|
|
41
39
|
|
|
42
|
-
|
|
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 += "</
|
|
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
|
-
|
|
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
|
-
|
|
35
|
-
|
|
31
|
+
let headings =
|
|
32
|
+
dom.window.document.body.querySelectorAll("h2, h3, h4, h5, h6");
|
|
36
33
|
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
for (let element of headings) {
|
|
35
|
+
let tagName = element.tagName.toLowerCase();
|
|
39
36
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
: (navItem?.id ?? "");
|
|
43
|
-
let elementId = element.id;
|
|
37
|
+
let isSectionTitle = tagName === "h2";
|
|
38
|
+
let isSubsectionTitle = tagName === "h3";
|
|
44
39
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
40
|
+
let sectionId = isSectionTitle
|
|
41
|
+
? getSlug(element.textContent)
|
|
42
|
+
: (navItem?.id ?? "");
|
|
43
|
+
let elementId = element.id;
|
|
49
44
|
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
if (!elementId)
|
|
46
|
+
elementId = getSlug(element.textContent)
|
|
47
|
+
.toLowerCase()
|
|
48
|
+
.replace(/_/g, "-");
|
|
52
49
|
|
|
53
|
-
|
|
50
|
+
if (elementId) {
|
|
51
|
+
element.id = elementId;
|
|
54
52
|
|
|
55
|
-
|
|
53
|
+
let link = `${root}${contentDir}/${sectionId}`;
|
|
56
54
|
|
|
57
|
-
|
|
58
|
-
}
|
|
55
|
+
if (!isSectionTitle) link += `#${elementId}`;
|
|
59
56
|
|
|
60
|
-
|
|
61
|
-
|
|
57
|
+
linkMap[`#${elementId}`] = link;
|
|
58
|
+
}
|
|
62
59
|
|
|
63
|
-
|
|
60
|
+
if (singlePage && isSectionTitle) {
|
|
61
|
+
if (navItem)
|
|
62
|
+
navItem.items.push({
|
|
64
63
|
id: getSlug(element.textContent),
|
|
65
64
|
title: element.innerHTML.trim(),
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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,
|