处理eRuby脚本的类。该类通常被称作ERbLight,与eruby不同的是,它在标准输出中显示字符时并不插入字符串。
使用ERB类时,需要添加require 'erb'语句。
require 'erb' ERB.new($<.read).run
ERB.new(eruby_script,
safe_level=nil, trim_mode=nil,
eoutvar='_erbout')
从eruby_script中生成ERB。可指定eval时的$SAFE、trim_mode(下文详述)和eoutvar(若需要在eRuby脚本中使用ERB时才需要修改。通常不必更改。)。
ERB#run(b=TOPLEVEL_BINDING)
以b的binding来执行ERB,显示字符。
ERB#result(b=TOPLEVEL_BINDING)
以b的binding来执行ERB,返回字符串。
ERB#src
取得变换之后的Ruby脚本。
ERB#def_method(mod,
methodname, fname='(ERB)')
将变换之后的Ruby脚本定义为方法。以mod来指定新方法所在的模块,以methodname来指定方法名。fname是定义脚本时的文件名。一般发生错误时才会用到它。
erb = ERB.new(script) erb.def_method(MyClass, 'foo(bar)', 'foo.erb')
ERB#def_module(methodname='erb')
返回一个无名模块,该模块将变换后的Ruby脚本定义为方法。
ERB#def_class(suplerklass=Object,
methodname='erb')
返回一个无名类,该类将变换后的Ruby脚本定义为方法。
ERB::Util.html_escape(s)
ERB::Util.h(s)
把HTML的 &"<> 变为转义字符。 (基本等同于CGI.escapeHTML。)
ERB::Util.url_encode(s)
ERB::Util.u(s)
对字符串进行URL编码。 (基本等同于CGI.escape。)
ERB::DefMethod.def_erb_method(methodname,
erb)
将erb的脚本定义为self的方法。由methodname指定方法名。若self是字符串的话,就读入该文件并使用ERB完成变换之后再定义为方法。
class Writer
extend ERB::DefMethod
def_erb_method('to_html', 'writer.erb')
...
end
...
puts writer.to_html
不同的trim_mode选项值会影响到对代码的处理方式。它可以指定
trim_mode选项的可用值如下。
运行范例
# 脚本 <% 3.times do |n| %> % n = 0 * <%= n%> <% end %> # trim_mode = nil, '', 0 % n = 0 * 0 % n = 0 * 1 % n = 0 * 2 # trim_mode = 1, '>' % n = 0 * 0% n = 0 * 1% n = 0 * 2 # trim_mode = 2, '<>' % n = 0 * 0 % n = 0 * 1 % n = 0 * 2 # trim_mode = '%' * 0 * 0 * 0 # trim_mode = '%>', '>%' * 0* 0* 0 # trim_mode = '%<>', '<>%' * 0 * 0 * 0