Skip to content

Commit e1edbc4

Browse files
committed
Display examples interleaved within reference docs
1 parent 35db4d5 commit e1edbc4

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

src/layouts/ReferenceItemLayout.astro

+30-4
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ const relatedReferences = [
7676
7777
const seenParams: Record<string, true> = {};
7878
79+
const descriptionParts = description.split(
80+
/(<pre><code class="language-js example">[\s\S]+?<\/code><\/pre>)/gm
81+
);
82+
7983
---
8084

8185
<Head title={entry.data.title} locale={currentLocale} />
@@ -101,10 +105,32 @@ const seenParams: Record<string, true> = {};
101105
<p>{t('experimentalApi', 'description')}</p>
102106
</div>
103107
)}
104-
<div
105-
set:html={description}
106-
class="[&_a]:text-type-magenta-dark [&_a]:!decoration-type-magenta-dark mb-xl reference-item rendered-markdown"
107-
/>
108+
{descriptionParts.map((part) => {
109+
if (part.startsWith('<pre')) {
110+
const exampleCode = part
111+
.replace(/<pre><code class="language-js example">/, '')
112+
.replace(/<\/code><\/pre>/, '');
113+
114+
return (
115+
<CodeEmbed
116+
client:load
117+
initialValue={exampleCode}
118+
previewable
119+
editable
120+
lazyLoad={false}
121+
allowSideBySide={true}
122+
includeSound={entry.data.module === 'p5.sound'}
123+
/>
124+
)
125+
} else {
126+
return (
127+
<div
128+
set:html={part}
129+
class="[&_a]:text-type-magenta-dark [&_a]:!decoration-type-magenta-dark mb-xl reference-item rendered-markdown"
130+
/>
131+
);
132+
}
133+
})}
108134
{
109135
examples && (
110136
<div class="mb-xl">

src/scripts/builders/reference.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ const getModulePath = (doc: ReferenceClassDefinition | ReferenceClassItem) => {
8080
docClass = doc.class;
8181
} else {
8282
if (!doc.module) console.log(doc)
83-
docClass = doc.module.startsWith("p5.") ? doc.module : "p5";
83+
docClass = doc.module?.startsWith("p5.") ? doc.module : "p5";
8484
}
8585

8686
return path.join(prefix, docClass, sortedModule);

0 commit comments

Comments
 (0)