mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-11 13:48:34 +00:00
61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
import React, { Fragment } from 'react';
|
|
import { docs } from '../doc.json';
|
|
import { MiniRepl } from './MiniRepl';
|
|
|
|
const visible = window.location.href.includes('?api=true');
|
|
|
|
function ApiDoc() {
|
|
if (!visible) {
|
|
return (
|
|
<p>
|
|
There remaining function documentation is a work in progress, but you can preview it by clicking{' '}
|
|
<a href="?api=true#everything-else">here</a>. Beware that everything is not properly ordered from this point.
|
|
</p>
|
|
);
|
|
}
|
|
// console.log('docJson', docs);
|
|
return (
|
|
<div>
|
|
<p>
|
|
The following Chapter is autogenerated from the jsdoc comments in the source files.{' '}
|
|
<a href="?#everything-else">hide</a>. Beware that everything is not properly ordered from this point.
|
|
</p>
|
|
{docs
|
|
.filter((item) => !item.name?.startsWith('_') && item.kind !== 'package')
|
|
.map((item, i) => (
|
|
<Fragment key={i}>
|
|
{' '}
|
|
<h2 id={`${item.memberof ? `${item.memberof}-` : ''}${item.name}`}>
|
|
{item.memberof && item.memberof !== item.name ? `${item.memberof}.` : ''}
|
|
{item.name}
|
|
</h2>
|
|
<div
|
|
dangerouslySetInnerHTML={{
|
|
__html: item.description.replaceAll(/\{\@link ([a-zA-Z]+)?\#?([a-zA-Z]*)\}/g, (_, a, b) => {
|
|
// console.log(_, 'a', a, 'b', b);
|
|
return `<a href="#${a}${b ? `-${b}` : ''}">${a}${b ? `#${b}` : ''}</a>`;
|
|
}),
|
|
}}
|
|
/>
|
|
{!!item.params?.length && <h3>Parameters</h3>}
|
|
<ul>
|
|
{item.params?.map((param, i) => (
|
|
<li key={i}>
|
|
{param.name} ({param.type?.names?.join('|')}): {param.description?.replace(/(<([^>]+)>)/gi, '')}
|
|
</li>
|
|
))}
|
|
</ul>
|
|
{item.examples?.length && <h3>Examples</h3>}
|
|
<div className="space-y-2">
|
|
{item.examples?.map((example, k) => (
|
|
<MiniRepl key={k} tune={example} />
|
|
))}
|
|
</div>
|
|
</Fragment>
|
|
))}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default ApiDoc;
|