jinja2模板自定义filter函数
专栏:ExASIC Sept. 30, 2024, 4:46 p.m. 19 阅读
介绍jinja2模板自定义filter函数的方法

比如,我们在模板语言jinja2里不只是字符串替换,需要对字符串做进一步的特殊处理,这事就需要用到filter函数了。

简单来说,filter函数就是类似linux管道一样,进来一个字符串,出去处理好的字符串。如下面的例子,这个左对齐的函数,当宽度不足时会在右侧补空格。

def left_align(s, l=20):
    return s.ljust(l, ' ')

又如,对verilog端口类型inputoutputinout作缩写。原则就是return处理好的字符串。

def dir_short(s):
    if s == 'input':
        return 'i'
    elif s == 'output':
        return 'o'
    elif s == 'inout':
        return 'io'

自定义的filter函数需要注册到jinji2里才能够识别出来。

env = jinja2.Environment()
env.filters['left_align'] = left_align
env.filters['dir_simple'] = dir_simple

注册之后,在jinja2模板里就可以使用了:

{{ port.name | left_align(20) }}
{{ port.direction | dir_short }}
感谢阅读,更多文章点击这里:【专栏:ExASIC】