in packages/@rnw-scripts/doxysaurus/src/markdown.ts [53:183]
function transformElement(
element: DoxDescriptionElement,
index: number,
): void {
switch (element['#name']) {
case '__text__':
return writeText(element._);
case 'sp':
return write(' ');
case 'nonbreakablespace':
return write(' ');
case 'ensp':
return write(' ');
case 'emsp':
return write(' ');
case 'thinsp':
return write(' ');
case 'emphasis':
return write('*', element.$$, '*');
case 'bold':
return write('**', element.$$, '**');
case 'mdash':
return write('—');
case 'ndash':
return write('–');
case 'linebreak':
return write('<br/>');
case 'para':
return writeBlock(
index ? '\n\n' : '',
' '.repeat(index ? indent : 0),
element.$$,
);
case 'orderedlist':
case 'itemizedlist':
return writeWithContext(element, index ? '\n' : '', element.$$);
case 'listitem':
const itemBullet =
last(context)?.['#name'] === 'orderedlist' ? '1. ' : '* ';
return writeWithIndent(
itemBullet.length,
index ? '\n' : '',
' '.repeat(indent),
itemBullet,
element.$$,
);
case 'parameterlist':
if (element.$.kind === 'param') {
return write(index ? '\n\n' : '', '### Parameters\n', element.$$);
} else if (element.$.kind === 'retval') {
return write(index ? '\n\n' : '', '### Return values\n', element.$$);
} else {
return log.warning(`Unknown parameterlist kind {${element.$.kind}}.`);
}
case 'parameteritem':
return write('\n* ', element.$$);
case 'parametername':
return writeCode('`', element.$$, '` ');
case 'computeroutput':
return writeCode('`', element.$$, '`');
case 'programlisting':
return writeCode('\n```cpp\n', element.$$, '```\n');
case 'codeline':
return write(element.$$, '\n');
case 'xrefsect':
return write('\n> ', element.$$);
case 'simplesect':
if (element.$.kind === 'attention') {
return write('> ', element.$$);
} else if (element.$.kind === 'return') {
return write(index ? '\n\n' : '', '### Returns\n\n', element.$$);
} else if (element.$.kind === 'see') {
return write('**See also**: ', element.$$);
} else {
log.warning(`[element.$.kind=${element.$.kind}]: not supported.`);
return;
}
case 'formula':
let s = (element._ || '').trim();
if (s.startsWith('$') && s.endsWith('$')) {
return write(s);
}
if (s.startsWith('\\[') && s.endsWith('\\]')) {
s = s.substring(2, s.length - 2).trim();
}
return write('\n$$\n' + s + '\n$$\n');
case 'preformatted':
return writeCode('\n<pre>', element.$$, '</pre>\n');
case 'sect1':
case 'sect2':
case 'sect3':
case 'sect4':
return writeWithContext(element, index ? '\n\n' : '', element.$$);
case 'title':
const level = Number((last(context)?.['#name'] || '0').slice(-1));
return write('#'.repeat(level), ' ', element._);
case 'heading':
sb.removeLastIf(' ');
return write('#'.repeat(Number(element.$.level || 0)), ' ', element.$$);
case 'hruler':
return write('---');
case 'ref':
return refLink(element);
case 'ulink':
return link(toMarkdown(element.$$), element.$.url);
case 'xreftitle':
return write('**', element.$$, ':** ');
case 'row':
write('\n', escapeRow(toMarkdown(element.$$, linkResolver)));
if ((element.$$[0] as DoxDescriptionElement).$.thead === 'yes') {
element.$$.forEach((_, i) => {
write(i ? ' | ' : '\n', '---------');
});
}
break;
case 'entry':
return write(escapeCell(toMarkdown(element.$$, linkResolver)), '|');
case 'anchor':
case 'highlight':
case 'table':
case 'parameterdescription':
case 'parameternamelist':
case 'xrefdescription':
case 'verbatim':
case undefined:
return write(element.$$);
default:
log.warning(`[element[['#name'=${element['#name']}]]]: not supported.`);
}
}