// retoor <retoor@molodetz.nl>
import "jinja" for Environment, DictLoader
var env = Environment.new(DictLoader.new({
"base": "[{\% block content \%}BASE{\% endblock \%}]",
"child": "{\% extends \"base\" \%}{\% block content \%}CHILD{\% endblock \%}",
"multi_block_base": "A:{\% block a \%}a{\% endblock \%} B:{\% block b \%}b{\% endblock \%}",
"multi_block_child": "{\% extends \"multi_block_base\" \%}{\% block a \%}A{\% endblock \%}",
"grandparent": "[{\% block x \%}GP{\% endblock \%}]",
"parent": "{\% extends \"grandparent\" \%}{\% block x \%}P{\% endblock \%}",
"grandchild": "{\% extends \"parent\" \%}{\% block x \%}GC{\% endblock \%}",
"super_base": "[{\% block s \%}BASE{\% endblock \%}]",
"super_child": "{\% extends \"super_base\" \%}{\% block s \%}{{ super() }}+CHILD{\% endblock \%}"
}))
System.print(env.getTemplate("base").render({})) // expect: [BASE]
System.print(env.getTemplate("child").render({})) // expect: [CHILD]
System.print(env.getTemplate("multi_block_base").render({})) // expect: A:a B:b
System.print(env.getTemplate("multi_block_child").render({})) // expect: A:A B:b
System.print(env.getTemplate("grandchild").render({})) // expect: [GC]
System.print(env.getTemplate("super_child").render({})) // expect: [BASE+CHILD]