Questo è il mio modello di Jinja per generare il codice C# dal mio modello di datiCome chiamare ricorsivamente una macro in jinja2?
using System;
namespace {{ domain["ns"] }} {
{% for class in domain["content"] %}
public class {{ class["name"] }} {
#region Inners
{{ class["innerClass"] }}
#endregion
#region Props
{% for field in class["content"] %}
{% if field["readonly"] == "true" %}
{% set readonly="private" %}
{% else %}
{% set readonly="" %}
{% endif %}
public {{ field["type"] }} {{ field["name"] }} {get;
{{ readonly }} set{
if ({{ field["constraint"] }}){
{{ field["name"] }}=value;
}else {
throw new Exception("Inserted value for {{ field["name"] }} is not valid!");
}
}
}
{% endfor %}
#endregion
}
{% endfor %}
}
questa è la mia domanda, per generare classi interne, voglio ricorsivamente anello sul mio modello di dati, come posso passare la classe [" innerClass "] come parametro alla mia prima istruzione?
per rendere una struttura ad albero in modo ricorsivo si potrebbe anche usare ciclo ricorsivo impresa di Jinja2 ure, [example] (http://stackoverflow.com/a/10961991/4279) – jfs
@ J.F.Sebastian: È più pulito della mia soluzione. Dovresti rendere il tuo commento una risposta. – Helgi
@Helgi Il tuo è molto più semplice comunque. La sintassi del ciclo ricorsivo di Jinja è più confusa della semplice ricorsione normale. –