@@ -3428,6 +3428,12 @@ def _parse_runestone_services(et):
34283428
34293429 return (rs_js , rs_css , rs_cdn_url , rs_version )
34303430
3431+ # Update stringparams with Runestone Services information
3432+ def _set_runestone_stringparams (stringparams , rs_js , rs_css , rs_version ):
3433+ stringparams ["rs-js" ] = rs_js
3434+ stringparams ["rs-css" ] = rs_css
3435+ stringparams ["rs-version" ] = rs_version
3436+
34313437# A helper function to query the latest Runestone
34323438# Services file, while failing gracefully
34333439
@@ -3477,9 +3483,7 @@ def _runestone_services(stringparams):
34773483 rs_version = "dev"
34783484 services_xml = None
34793485 # Return, plus side-effect
3480- stringparams ["rs-js" ] = rs_js
3481- stringparams ["rs-css" ] = rs_css
3482- stringparams ["rs-version" ] = rs_version
3486+ _set_runestone_stringparams (stringparams , rs_js , rs_css , rs_version )
34833487 return (rs_js , rs_css , rs_cdn_url , rs_version , services_xml )
34843488
34853489 # Otherwise, we have a URL pointing to the Runestone server/CDN
@@ -3537,9 +3541,7 @@ def _runestone_services(stringparams):
35373541 rs_js , rs_css , rs_cdn_url , rs_version = _parse_runestone_services (services )
35383542
35393543 # Return, plus side-effect
3540- stringparams ["rs-js" ] = rs_js
3541- stringparams ["rs-css" ] = rs_css
3542- stringparams ["rs-version" ] = rs_version
3544+ _set_runestone_stringparams (stringparams , rs_js , rs_css , rs_version )
35433545 return (rs_js , rs_css , rs_cdn_url , rs_version , services_xml )
35443546
35453547
@@ -3784,9 +3786,26 @@ def html(xml, pub_file, stringparams, xmlid_root, file_format, extra_xsl, out_fi
37843786 # names for scratch directories
37853787 tmp_dir = get_temporary_directory ()
37863788
3789+ add_runestone_services = True
3790+ # quick and dirty tries to use existing rs services
3791+ # on failure, will get new ones
3792+ if "html.quick-dirty" in stringparams :
3793+ try :
3794+ services_record_files = os .path .join (dest_dir , "_static" , "_runestone-services.xml" )
3795+ with open (services_record_files , 'r' ) as f :
3796+ services_xml = f .read ()
3797+ services = ET .fromstring (services_xml )
3798+ rs_js , rs_css , rs_cdn_url , rs_version = _parse_runestone_services (services )
3799+ _set_runestone_stringparams (stringparams , rs_js , rs_css , rs_version )
3800+ log .info ("Quick and dirty HTML is using old Runestone Services. Delete _static/_runestone-services.xml from output to update Runestone." )
3801+ add_runestone_services = False
3802+ except :
3803+ log .info ("Quick and dirty HTML failed to use old Runestone Services. Will download Runestone." )
3804+
37873805 # interrogate Runestone server (or debugging switches) and populate
37883806 # NB: stringparams is augmented with Runestone Services information
3789- _place_runestone_services (tmp_dir , stringparams )
3807+ if add_runestone_services :
3808+ _place_runestone_services (tmp_dir , stringparams )
37903809
37913810 # support publisher file, and subtree argument
37923811 if pub_file :
@@ -3799,15 +3818,16 @@ def html(xml, pub_file, stringparams, xmlid_root, file_format, extra_xsl, out_fi
37993818 else :
38003819 extraction_xslt = os .path .join (get_ptx_xsl_path (), "pretext-html.xsl" )
38013820
3802- # place managed directories - some of these (Asymptote HTML) are
3803- # consulted during the XSL run and so need to be placed beforehand
3804- copy_managed_directories (tmp_dir , external_abs = external_abs , generated_abs = generated_abs )
3821+ if "html.quick-dirty" not in stringparams :
3822+ # place managed directories - some of these (Asymptote HTML) are
3823+ # consulted during the XSL run and so need to be placed beforehand
3824+ copy_managed_directories (tmp_dir , external_abs = external_abs , generated_abs = generated_abs )
38053825
3806- # place JS in scratch directory
3807- copy_html_js (tmp_dir )
3826+ # place JS in scratch directory
3827+ copy_html_js (tmp_dir )
38083828
3809- # build or copy theme
3810- build_or_copy_theme (xml , pub_file , stringparams , tmp_dir )
3829+ # build or copy theme
3830+ build_or_copy_theme (xml , pub_file , stringparams , tmp_dir )
38113831
38123832 # Write output into temporary directory
38133833 log .info ("converting {} to HTML in {}" .format (xml , tmp_dir ))
0 commit comments