1313from pcweb .constants import REFLEX_ASSETS_CDN
1414from pcweb .docgen_pipeline import get_docgen_toc , render_docgen_document
1515from pcweb .flexdown import xd
16+ from pcweb .meta .meta import jsonld_script
1617from pcweb .pages .docs .component import multi_docs
1718from pcweb .pages .library_previews import components_previews_pages
1819from pcweb .route import Route
@@ -256,9 +257,14 @@ def get_component(doc: str, title: str):
256257 return None
257258
258259 d = load_flexdown_doc (actual_doc_path )
260+ ldjson = d .metadata .get ("ldjson" )
259261
260262 def comp ():
261- return (get_toc (d , actual_doc_path ), xd .render (d , actual_doc_path ))
263+ toc = get_toc (d , actual_doc_path )
264+ rendered = xd .render (d , actual_doc_path )
265+ if ldjson :
266+ rendered = rx .fragment (jsonld_script (ldjson ), rendered )
267+ return (toc , rendered )
262268
263269 return make_docpage (resolved .route , resolved .display_title , doc , comp )
264270
@@ -273,9 +279,18 @@ def get_component_docgen(virtual_doc: str, actual_path: str, title: str):
273279 if virtual_doc .startswith ("docs/library" ):
274280 return handle_library_doc (virtual_doc , actual_path , title , resolved )
275281
276- def comp (_actual = actual_path ):
282+ # Load metadata to check for ldjson (docgen docs use flexdown for metadata).
283+ try :
284+ _meta_doc = load_flexdown_doc (actual_path )
285+ ldjson = _meta_doc .metadata .get ("ldjson" )
286+ except (OSError , ValueError ):
287+ ldjson = None
288+
289+ def comp (_actual = actual_path , _ldjson = ldjson ):
277290 toc = get_docgen_toc (_actual )
278291 rendered = render_docgen_document (_actual )
292+ if _ldjson :
293+ rendered = rx .fragment (jsonld_script (_ldjson ), rendered )
279294 return (toc , rendered )
280295
281296 return make_docpage (resolved .route , resolved .display_title , virtual_doc , comp )
0 commit comments