【问题标题】:How to control EOL and leading spaces in Mako?如何控制 Mako 的 EOL 和领先空间?
【发布时间】:2017-09-26 20:13:01
【问题描述】:

通过以下方式,我想控制 EOL:

<%!
    import sqlite3
    def data():
        return [(1,2,3,4,5), (1,2,3,4,5)]
%>
/**
 * Header file
 */
#define foo bar

% for row in data():
    { \
    % for col in row:
        ${col}, \
    % endfor
    }
% endfor

目标是打印:

{1,2,3,4,5},
{1,2,3,4,5}    

我尝试过类似的操作:

% for row in data():
    {<%for i, col in enumerate(row):%>${','*bool(i)}${col}<%endfor%>},
% endfor

【问题讨论】:

    标签: python template-engine mako


    【解决方案1】:

    如何为输出定义一些短函数,如下所示:

    <%!
        def data():
            return [(1,2,3,4,5), (1,2,3,4,5)]
    
        join_data = lambda dat, delim: delim.join(join_row(row) for row in dat)
        join_row = lambda row:'{%s}' % ','.join(str(i) for i in row)
    %>
    

    然后

    ${join_data(data(), ',\n')}
    

    会输出

    {1,2,3,4,5},
    {1,2,3,4,5}
    

    或者如果你想要标签,你可以这样做

        ${join_data(data(), ',\n\t')}
    

    这将产生

        {1,2,3,4,5},
        {1,2,3,4,5}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2012-12-05
      • 2018-06-01
      • 2019-04-27
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多