Skip to content

Commit 28f36fb

Browse files
authored
Merge pull request #675 from processing/interleaved-examples
Display examples interleaved within reference docs
2 parents 0e516df + e1edbc4 commit 28f36fb

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