{% from 'utils.html' import apply_dattrs, apply_classes %}
{%- macro inline_code(code) %}
{{ code }}
{% endmacro -%}
{%- macro code(code, lang='json') %}
{{ code }}
{% endmacro -%}
{%- macro tokenize_code(code, delimiter=' ',
use_pre=True,
use_code=True,
classes=[],
token_classes={},
token_dattrs={},
replacers=[],
wrap_all=True) %}
{#
Convert a code string into a code block with span wrappers for all
matching tokens specified. All values in `token_classes` will be used as classes to apply to each token wrapper.
Tokens are determined by splitting on `delimiter`.
Unmatched tokens will still be wrapped in a span unless `wrap_all` is False.
Usage:
tokenize_code(
'FOO bar BAZ "quux"',
delimiter=' ',
token_dattrs={'BAZ': 'data-val'}
token_classes={'FOO': 'foocls'},
replacers=['"'],
wrap_all=True,
)
FOO
bar
BAZ
quux
#}
{% if use_pre %}{% endif %}
{% if use_code %}{% endif %}
{% for token in code.split(delimiter) %}
{% if wrap_all %}
{% set tok = token.strip()|cut(replacers) %}
{% set _dattrs = token_dattrs.get(tok, [])%}
{% set _classes = token_classes.get(tok, [])%}
{{ tok }}
{% endif %}
{% endfor %}
{% if use_code %}
{% endif %}
{% if use_pre %}
{% endif %}
{% endmacro -%}