Skip to content

Commit 30c65da

Browse files
authored
Merge pull request #1068 from limzykenneth/reference-parsing
Reference parsing now also parse META comments
2 parents 8520709 + 2627fd1 commit 30c65da

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

src/layouts/ReferenceItemLayout.astro

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,13 @@ const descriptionParts = description.split(
150150
examples && (
151151
<div class="mb-xl">
152152
<h2 class="text-h3">{t("Examples")}</h2>
153-
{examples.map(({ src: exampleCode, classes }, i: number) => {
153+
{examples.map(({ src: exampleCode, classes, meta }, i: number) => {
154+
const previewable = !classes.norender && !meta.includes('norender');
154155
return (
155156
<CodeEmbed
156157
client:load
157158
initialValue={exampleCode}
158-
previewable={!classes.norender}
159+
previewable={previewable}
159160
editable
160161
lazyLoad={false}
161162
allowSideBySide={true}

src/pages/_utils.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,11 @@ export const getLibraryLink = (library: CollectionEntry<"libraries">) =>
196196
* @returns The examples separated into individual strings
197197
*/
198198
// separateReferenceExamples
199-
export const parseReferenceExamplesAndMetadata = (examples: string[]): { src: string, classes: Record<string, any> }[] =>
199+
export const parseReferenceExamplesAndMetadata = (examples: string[]): {
200+
src: string,
201+
classes: Record<string, any>,
202+
meta: string[]
203+
}[] =>
200204
examples
201205
?.flatMap((example: string) => example.split("</div>"))
202206
.map((src: string) => {
@@ -210,7 +214,18 @@ export const parseReferenceExamplesAndMetadata = (examples: string[]): { src: st
210214
}
211215
return { classes, src }
212216
})
213-
.map(({ src, classes }) => ({ classes, src: src.replace(/<\/?div[^>]*>|<\/?code>/g, "") }))
217+
.map(({ src, classes }) => {
218+
const metaMatch = src.match(/^\/\/ META:(.+)/);
219+
let meta: string[] = [];
220+
if(metaMatch !== null){
221+
meta = metaMatch?.[1].split(",") ?? [];
222+
}
223+
return {
224+
classes,
225+
src: src.replace(/<\/?div[^>]*>|<\/?code>/g, "").replace(/^\/\/ META:(.+)/, ""),
226+
meta
227+
};
228+
})
214229
.filter(({ src }) => src);
215230

216231
/**

0 commit comments

Comments
 (0)