Skip to content

Commit a46bd49

Browse files
authored
Improve Capabilities Page Readability (#1612)
feat(capabilities): propagate TL summaries (closes #1283)
1 parent 4d95918 commit a46bd49

File tree

2 files changed

+297
-2
lines changed

2 files changed

+297
-2
lines changed

src/documentation/print-capabilities-markdown.ts

+35
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,48 @@ async function printSingleCapability(info: CapabilityInformation, depth: number,
107107
return nextLine ? `${mainLine}\\\n${nextLineIndent}${nextLine}` : mainLine;
108108
}
109109

110+
interface ChildrenSummary {
111+
total: number;
112+
fully: number;
113+
partially: number;
114+
not: number;
115+
}
116+
117+
function summarizeChildren(capabilities: readonly FlowrCapability[]): ChildrenSummary {
118+
const summary: ChildrenSummary = { total: 0, fully: 0, partially: 0, not: 0 };
119+
for(const capability of capabilities) {
120+
if(capability.capabilities) {
121+
const childSummary = summarizeChildren(capability.capabilities);
122+
summary.fully += childSummary.fully;
123+
summary.partially += childSummary.partially;
124+
summary.not += childSummary.not;
125+
summary.total += childSummary.total;
126+
}
127+
if(capability.supported) {
128+
summary[capability.supported]++;
129+
summary.total++;
130+
}
131+
}
132+
return summary;
133+
}
134+
135+
function printSummary(sum: ChildrenSummary): string {
136+
return `${sum.fully} fully, ${sum.partially} partially, ${sum.not} not supported`;
137+
}
138+
110139
async function printAsMarkdown(info: CapabilityInformation, capabilities: readonly FlowrCapability[], depth = 0, lines: string[] = []): Promise<string> {
111140
for(let i = 0; i < capabilities.length; i++) {
112141
const capability = capabilities[i];
113142
const result = await printSingleCapability(info, depth, i + 1, capability);
114143
lines.push(result);
115144
if(capability.capabilities) {
145+
const summary = summarizeChildren(capability.capabilities);
146+
lines.push(`\n\n${' '.repeat(depth + 1)}<details ${depth > 0 ? 'open' : ''}><summary>${summary.total} child${summary.total === 1 ? '' : 'ren'} (${printSummary(summary)})</summary>\n\n`);
116147
await printAsMarkdown(info, capability.capabilities, depth + 1, lines);
148+
lines.push(`\n\n${' '.repeat(depth + 1)}</details>\n\n`);
149+
if(depth === 0) {
150+
lines.push('\n\n' + ' '.repeat(depth + 1) + '-'.repeat(42) + '\n\n');
151+
}
117152
}
118153
}
119154
return lines.join('\n');

0 commit comments

Comments
 (0)