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