gpt4 book ai didi

ruby - HAML - 一个非常奇怪的缩进差异 - 错误?

转载 作者:数据小太阳 更新时间:2023-10-29 07:34:19 25 4
gpt4 key购买 nike

这个 HAML

%script{:type => "text/javascript"}
:plain
$(document).ready(function() {
bar();
var foo = foo_func("#{}");
});

正如预期的那样:

<script type='text/javascript'>
$(document).ready(function() {
bar();
var foo = foo_func("");
});
</script>

但是这个几乎完全相同 HAML(仅将bar()更改为prep()):

%script{:type => "text/javascript"}
:plain
$(document).ready(function() {
prep();
var foo = foo_func("#{}");
});

给出这个:

<script type='text/javascript'>
$(document).ready(function() {
prep();
var foo = foo_func("");
});
</script>

注意第二种情况下的困惑缩进

为什么将 bar() 更改为 prep() 会导致这种奇怪的差异?

最佳答案

这是由 prep() 中的字符 pre 匹配 Haml 用来处理空白的正则表达式引起的。

在 Haml 中,您使用空格来指定元素的内容,通常这是可以的,因为在查看 HTML 时,空格会被“压缩”,因此它显示为单个字符。然而,空白在某些 HTML 元素(precodetextarea)中很重要,Haml 试图检测和处理这些元素。在这种情况下,正则表达式被匹配并且第一行之后的 block 没有缩进。

此代码已在最新版本(当前为 4.0.1.rc.1)中更改,并且在该版本中不会发生这种情况。我还创建了一个 pull request that fixes the regex in the 3-1 branch .

关于ruby - HAML - 一个非常奇怪的缩进差异 - 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15312365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com