如何控制 Mako 中的 EOL 和前导空格?

How to control EOL and leading spaces in Mako?

有了以下,我想控制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

像这样为输出定义一些短函数如何:

<%!
    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}

或者如果你想使用 Tab 键,你可以这样做

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

这将产生

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