Đây là mẫu jinja của tôi để tạo ra C# mã từ mô hình dữ liệu của tôiLàm thế nào để đệ quy gọi macro trong 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 %}
}
đây là câu hỏi của tôi, vì tạo ra các lớp bên trong, tôi muốn đệ quy loop trên mô hình dữ liệu của tôi, thế nào tôi có thể vượt qua lớp [" innerClass "] làm tham số cho câu lệnh đầu tiên của tôi?
để vẽ lại một cấu trúc cây giống như đệ quy bạn cũng có thể sử dụng vòng lặp kỳ đệ quy jinja2 của ure, [example] (http://stackoverflow.com/a/10961991/4279) – jfs
@ J.F.Sebastian: Nó sạch hơn giải pháp của tôi. Bạn nên làm cho bình luận của bạn một câu trả lời. – Helgi
@Helgi Yours là đơn giản hơn nhiều tuy nhiên. Cú pháp vòng lặp đệ qui của Jinja khó hiểu hơn là đệ quy bình thường. –