Source code for ipypublish.port_api.convert_format_str

import string


[docs]class DefaultFormatter(string.Formatter):
[docs] def get_value(self, key, args, kwargs): # Handle a key not found try: val = super(DefaultFormatter, self).get_value(key, args, kwargs) # Python 3, 'super().get_field(field_name, args, kwargs)' works except (IndexError, KeyError): if str(key).endswith("_pre"): val = "@ipubreplace{above}{" + str(key) + "}" else: val = "@ipubreplace{below}{" + str(key) + "}" return val
[docs]def convert_format_str(template): temp_str = "\n".join(template) fmt = DefaultFormatter() outstr = fmt.format(temp_str) return outstr
if __name__ == "__main__": template = [ "{{%- extends 'null.tpl' -%}}", "{{% block header %}}", "{{{{ nb.metadata | meta2yaml('#~~ ') }}}}", "{{% endblock header %}}", "{{% block codecell %}}", "#%%", "{{{{ super() }}}}", "{{% endblock codecell %}}", "{{% block in_prompt %}}{{% endblock in_prompt %}}", "{{% block input %}}{{{{ cell.metadata | meta2yaml('#~~ ') }}}}", # noqa: E501 "{{{{ cell.source | ipython2python }}}}", "{{% endblock input %}}", "{{% block markdowncell scoped %}}#%% [markdown]", "{{{{ cell.metadata | meta2yaml('#~~ ') }}}}", "{{{{ cell.source | comment_lines }}}}", "{{% endblock markdowncell %}}", ] print(convert_format_str(template))