mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os.path
 | |
| 
 | |
| 
 | |
| def render_html_extra_templates(app):
 | |
|     if app.builder.format != 'html':
 | |
|         # Non-HTML builders do not provide .templates.render_string(). Note that a HTML
 | |
|         # builder is still used also when building some other formats like json or epub.
 | |
|         return
 | |
| 
 | |
|     for input_path, template_config in app.config.html_extra_templates.items():
 | |
|         # Requiring absolute paths simplifies the implementation.
 | |
|         if not os.path.isabs(input_path):
 | |
|             raise RuntimeError(f"Template input path is not absolute: {input_path}")
 | |
|         if not os.path.isabs(template_config['target']):
 | |
|             raise RuntimeError(f"Template target path is not absolute: {template_config['target']}")
 | |
| 
 | |
|         with open(input_path, 'r') as input_file:
 | |
|             # This runs Jinja2, which supports rendering {{ }} tags among other things.
 | |
|             rendered_template = app.builder.templates.render_string(
 | |
|                 input_file.read(),
 | |
|                 template_config['context'],
 | |
|             )
 | |
| 
 | |
|         with open(template_config['target'], 'w') as target_file:
 | |
|             target_file.write(rendered_template)
 | |
| 
 | |
|         app.config.html_extra_path.append(template_config['target'])
 | |
| 
 | |
| 
 | |
| def setup(app):
 | |
|     app.add_config_value('html_extra_templates', default={}, rebuild='', types=dict)
 | |
| 
 | |
|     # Register a handler for the env-before-read-docs event. Any event that's fired before static
 | |
|     # files get copied would do.
 | |
|     app.connect(
 | |
|         'env-before-read-docs',
 | |
|         lambda app, env, docnames: render_html_extra_templates(app)
 | |
|     )
 | |
| 
 | |
|     return {
 | |
|         # NOTE: Need to access _raw_config here because setup() runs before app.config is ready.
 | |
|         'version': app.config._raw_config['version'],  # pylint: disable=protected-access
 | |
|         'parallel_read_safe': True,
 | |
|         'parallel_write_safe': True,
 | |
|     }
 |