绝地无双
Rails不使用斯德利布再培训局默认情况下,它使用埃卢比..资料来源:这是开发计划署的评论, ActionView宝石规范, 接受合并请求我在写这篇文章时做了.那里是它们之间的行为差异,特别是连字符操作符是如何操作的。%-和-%工作。文件很少,Ruby的ERB格式“正式”定义在哪里?下面是实证结论。所有测试都假设:require 'erb'require 'erubis'当你可以用-你必须通过-到trim_mode任选ERB.new用它。erubis:默认启用。例子:begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; endERB.new("<%= 'a' -%>\nb" , nil, '-') .result == 'ab'
or raiseErubis::Eruby.new("<%= 'a' -%> \n b").result == 'a b' or raise什么-%是否:如果下一个字符是换行符,请删除它。埃卢比:如果整行只包含空白空间,则删除整行否则,如果标签前面有一个非空格,而后面只有白色,则删除后面的白色。否则,标签后面有一个非空格:什么都不做。在……里面<% %>(没有=), -是没用的,因为<% %>和<% -%>都是一样的。<% %>如果当前行仅包含空白空间,则移除当前行,否则不执行任何操作。在……里面<%= -%>(与=):例子:# RemoveERB.new("a \nb <% 0 -%>\n c", nil, '-').result == "a \nb c" or raise# Don't do anything: not followed by newline, but by space:
ERB.new("a\n<% 0 -%> \nc", nil, '-').result == "a\nb \nc" or raise# Remove the current line because only whitesapaces:Erubis:
:Eruby.new(" <% 0 %> \nb").result == 'b' or raise# Same as above, thus useless because longer.Erubis::Eruby.new(" <% 0 -%> \nb").
result == 'b' or raise# Don't do anything because line not empty.Erubis::Eruby.new("a <% 0 %> \nb").result == "a \nb" or raiseErubis:
:Eruby.new(" <% 0 %> a\nb").result == " a\nb" or raiseErubis::Eruby.new(" <% 0 -%> a\nb").result == " a\nb" or raise# Don't remove
the current line because of `=`:Erubis::Eruby.new(" <%= 0 %> \nb").result == " 0 \nb" or raise# Remove the current line even with `=`
:Erubis::Eruby.new(" <%= 0 -%> \nb").result == " 0b" or raise# Remove forward only because of `-` and non space before:Erubis::Eruby.
new("a <%= 0 -%> \nb").result == "a 0b" or raise# Don't do anything because non-whitespace forward:Erubis::Eruby.new(" <%= 0 -%> a\nb")
.result == " 0 a\nb" or raise什么%-是否:Erb:在标记之前和之前的换行符之后删除空格,但前提是之前只有空格。埃鲁比人:没用,因为<%- %>是相同的<% %>(没有=),这不能与=这是唯一一个-%可能很有用。所以不要用这个。例子:# RemoveERB.new("a \n <%- 0 %> b\n c", nil, '-').result == "a \n b\n c" or raise# b is not whitespace: do nothing:ERB.new("a \nb
<%- 0 %> c\n d", nil, '-').result == "a \nb c\n d" or raise什么%-和-%一起做这两种效应的精确组合。