Ruby 从Nokogiri::XML::Node::SaveOptions常量中删除类名
是否有任何方法可以像使用模块一样包含来自的常量 我目前正在使用Ruby 从Nokogiri::XML::Node::SaveOptions常量中删除类名,ruby,nokogiri,Ruby,Nokogiri,是否有任何方法可以像使用模块一样包含来自的常量 我目前正在使用 save_options = Nokogiri::XML::Node::SaveOptions::FORMAT | Nokogiri::XML::Node::SaveOptions::AS_HTML puts html.serialize(:save_with => save_options) 我宁愿 html.serialize(:save_with => FORMAT | AS_HTML) 我可以通过使用 inc
save_options = Nokogiri::XML::Node::SaveOptions::FORMAT | Nokogiri::XML::Node::SaveOptions::AS_HTML
puts html.serialize(:save_with => save_options)
我宁愿
html.serialize(:save_with => FORMAT | AS_HTML)
我可以通过使用
include Nokogiri::XML
html.serialize(:save_with => Node::SaveOptions::FORMAT | Node::SaveOptions::AS_HTML)
或
但这两者都不理想。有人有更好的方法吗?我看不出为什么这不能成为一个模块而不是一个类,因为创建一个对象的好处几乎不存在。最安全的方法是“手动”创建所需的常量。如果在范围中写入此项,则将使用正确的值定义常量:
class YourClass # or module YourModule
%w(FORMAT AS_HTML).each do |konst|
const_set(konst, Nokogiri::XML::Node::SaveOptions.const_get(konst))
end
end
如果常量的数量很大,您可以稍微自动化创建。问题是这是一种要么全有要么全无的方法,类名之类的东西也是常量,所以它们也会被导入。对于您正在寻找的常量来说,这似乎不是问题
class YourClass
Nokogiri::XML::Node::SaveOptions.constants.each do |konst|
const_set(konst, Nokogiri::XML::Node::SaveOptions.const_get(konst))
end
end
希望对您有所帮助。如果您正在使用
html.serialize(:save_with=>FORMAT | AS_html)
并希望简化它,为什么不使用:
html.to_html
它使用以下标志输出:
DEFAULT_HTML = FORMAT | NO_DECLARATION | NO_EMPTY_TAGS | AS_HTML
这是Nokogiri的标准HTML输出默认值
如果您需要所有电源,您可以向下钻取以使用write_to
to_html
和write_to
都记录在中。你可能也想要在源代码中四处窥探
DEFAULT_HTML = FORMAT | NO_DECLARATION | NO_EMPTY_TAGS | AS_HTML