Meine jinja2 Vorlage erhält einen Code-Block, der eine beliebige Anzahl von verschiedenen Sprachen enthalten kann. Ich würde gerne den richtigen Lexer an das Template übergeben und es mit dem jinja2-highlight Plugin (pygents) entsprechend rendern. Ich rendere meine Vorlage mit der 'Befehl' Variable, die ein Wörterbuch ist, das alle Daten enthält, die im Rest der Vorlage notwendig sind. Im Idealfall würde Ich mag etwas in diese Richtung tunVariable lexer in jinja2 highlight
{% highlight "{{ command.lexer }}", lineno='table' %}{{ command.script }}{% endhighlight %}
ich versucht habe:
{% highlight command.lexer, lineno='table' %}
{% highlight 'command.lexer', lineno='table' %}
{% highlight '{{ command.lexer }}', lineno='table' %}
und sogar
{% set lexer = command.lexer %}
{% highlight 'lexer', lineno='table' %}
{% highlight '{{ lexer }}', lineno='table' %}
Ich kann die Kombination von Rendering scheinen, um herauszufinden Regeln zwischen jinja2 und jinja2-highlight/pygents.
Ich mag etwas nicht tun möchte:
{% if command.lexer == 'bash' %}
{% highlight 'bash', lineno='table' %}
{% elif command.lexer == 'perl' %}
{% highlight 'perl', lineno='table' %}
...
{% endif %}
Es scheint mit der jinja2 Parser-Klasse zu tun zu haben, aber ich bin ein bisschen stecken .. fühlt sich an wie ich etwas mit Blick auf bin trivial.
verschiedene Fehlermeldungen alle wie folgt aussehen:
jinja2.exceptions.TemplateSyntaxError: expected token 'end of statement block', got ','