Jinja模板生成枚举代码如何消除多余空白并调整输出格式?
你可以直接使用调整后的Jinja模板实现目标格式输出:
enum MsgType { {% for type in types -%} {% for member in type.members -%} {% if member.is_enum %} {{ member.value }}, {% endif -%} {% endfor -%} {% endfor %} }
调整说明
- 原模板没有给枚举值添加前置缩进,也没有在每个枚举值后加单独换行,所以多个枚举值会挤在同一行。调整后在
{{ member.value }}前手动写入4个空格作为缩进,逗号后直接换行,保证每个枚举成员单独占一行、缩进符合要求 - 调整了空白控制符
-的位置,仅消去for、if这类控制标签前后的多余换行,不会影响枚举值行的正常换行和缩进 - 原模板末尾带分号,你期望的输出没有分号,因此直接去掉了模板末尾的分号
如果你的目标编程语言不支持枚举最后一个成员末尾带逗号,可以用如下模板自动处理末尾逗号:
enum MsgType { {% set enum_members = [] %} {% for type in types -%} {% for member in type.members -%} {% if member.is_enum %}{% set _ = enum_members.append(member.value) %}{% endif -%} {% endfor -%} {% endfor -%} {% for member in enum_members %} {{ member }}{% if not loop.last %},{% endif %} {% endfor %} }
内容的提问来源于stack exchange,提问作者fluter
相关产品推荐
相关产品推荐

