转义属性值/阻止Haml中的html清理

时间:2012-11-27 22:35:19

标签: haml

这是我的Haml:

%a{:href => "/settings", "data-icon" => "⚙"}

哪个输出:

<a data-icon='&amp;#9881;' href='/settings'>Settings</a>

我想输出:

<a data-icon='&#9881;' href='/settings'>Settings</a>

所以我尝试了escaping&符号:

%a{:href => "/settings", "data-icon" => "\&#9881;"}

但似乎只能逃脱一条线的第一个角色。

我也尝试过不同的插值/转义方法但没有成功:

"#{"&#9881;"}"

使用普通的html(<a href="/settings" data-icon="&#9881">Settings</a>)是一种权宜之计,我不认为是一种解决方案。如果我想以编程方式设置data-icon该怎么办?

另一种选择是:

%a{:href => "#", "data-icon" => "⚙"} Settings

但是如果我想使用PUA字符怎么办?它还使得更难以确定标记中的字符是什么。

Demo

1 个答案:

答案 0 :(得分:1)

您需要将escape_attrs option设置为false:once

$ haml --no-escape-attrs
%a{:href => "/settings", "data-icon" => "&#9881;"}

输出:

<a data-icon='&#9881;' href='/settings'></a>

--no-escape-attrs从命令行将escape_attrs选项设置为false。有关如何在其他情况下设置选项的信息,请参阅the docs

(它看起来不像codepen.io,你可以指定Haml选项,所以我不能在那里提供演示)。