1414from pathlib import Path
1515from m2r import MdInclude
1616from recommonmark .transform import AutoStructify
17+ from jinja2 import FileSystemLoader , Environment
1718
1819# -- Project information (unique to each project) -------------------------------------
1920
187188# Customize the html_theme
188189html_theme_options = {'navigation_depth' : 3 }
189190
190- # Template for generating the components.rst file
191- # fmt:off
192- components_rst_template = \
193- """
194- {metapackage_toctree}
195-
196- *labscript suite* components
197- ============================
198-
199- The *labscript suite* is modular by design, and is comprised of:
200-
201- .. list-table:: Python libraries
202- :widths: 10 90
203- :header-rows: 0
204-
205- {lib}
206-
207- .. list-table:: Graphical applications
208- :widths: 10 90
209- :header-rows: 0
210-
211- {gui}
212-
213- .. toctree::
214- :maxdepth: 2
215- :hidden:
216-
217- {toctree_entires}
218-
219- {rst_defs}
220- """
221-
222- components_rst_table_template = \
223- """ * - .. image:: {img}
224- :target: {target}
225- :class: labscript-suite-icon
226- - |{prog}|_ --- {desc}
227- """
228-
229- components_rst_link_template = \
230- """.. |{prog}| replace:: **{prog}**
231- .. _{prog}: {target}
232- """
233-
234- components_rst_metapackage_template = \
235- """.. toctree::
236- :maxdepth: 2
237- :hidden:
238-
239- Metapackage documentation <{}>
240- """
241- # fmt:on
242-
243191# Use m2r only for mdinclude and recommonmark for everything else
244192# https://github.com/readthedocs/recommonmark/issues/191#issuecomment-622369992
245193def setup (app ):
@@ -261,43 +209,14 @@ def setup(app):
261209
262210 # generate the components.rst file dynamically so it points to stable/latest
263211 # of subprojects correctly
264- components_rst_table = {
265- "lib" : "" ,
266- "gui" : "" ,
267- }
268- components_rst_link = ""
269- components_rst_toctree = ""
270- components_rst_metapackage = ""
271- if project != 'the labscript suite' :
272- components_rst_metapackage = components_rst_metapackage_template .format (
273- intersphinx_mapping ['labscript-suite' ][0 ]
274- )
275- metapackage_img = img_path + "/labscript-suite-rectangular-transparent_138nx70n.svg"
276- for ls_prog , data in labscript_suite_programs .items ():
277- components_rst_table [data ['type' ]] += components_rst_table_template .format (
278- prog = ls_prog ,
279- labscript_suite_doc_version = labscript_suite_doc_version ,
280- target = intersphinx_mapping [ls_prog ][0 ],
281- ** data
282- )
283- components_rst_link += components_rst_link_template .format (
284- prog = ls_prog ,
285- labscript_suite_doc_version = labscript_suite_doc_version ,
286- target = intersphinx_mapping [ls_prog ][0 ],
287- )
288- for ls_prog in sorted (labscript_suite_programs ):
289- if ls_prog != project :
290- components_rst_toctree += " {} <{}>\n " .format (
291- ls_prog , intersphinx_mapping [ls_prog ][0 ]
292- )
293-
294- components_rst = components_rst_template .format (
295- toctree_entires = components_rst_toctree ,
296- rst_defs = components_rst_link ,
297- labscript_suite_doc_version = labscript_suite_doc_version ,
298- metapackage_toctree = components_rst_metapackage ,
299- ** components_rst_table
300- )
301-
212+ loader = FileSystemLoader (Path (__file__ ).resolve ().parent / templates_path [0 ])
213+ env = Environment (loader = loader )
214+ template = env .get_template ('components.rst' )
302215 with open (Path (__file__ ).resolve ().parent / 'components.rst' , 'w' ) as f :
303- f .write (components_rst )
216+ f .write (
217+ template .render (
218+ intersphinx_mapping = intersphinx_mapping ,
219+ programs = labscript_suite_programs ,
220+ current_project = project ,
221+ )
222+ )
0 commit comments