我正在使用Sanitize Gem干净方法的包装来解决我们的一些问题:
def remove_markup(html_str)
html_str.gsub /(\<\/p\>)/, "#{$1}\n"
marked_up = Sanitize.clean html_str
ESCAPE_SEQUENCES.each do |esc_seq, ascii_seq|
marked_up = marked_up.gsub('&' + esc_seq + ';', ascii_seq.chr)
end
marked_up
end
我最近添加gsub两行作为我想要的快速方式: 在段落结束的地方替换插入换行符。
然而,我确信使用Sanitize变压器可以更好地完成这项工作。 不幸的是,我认为我必须误解一些事情。以下是我为有效标签编写的变压器示例。
s2 = "<p>here is para 1<br> It's a nice paragraph</p><p>Don't forget para 2</p>"
br_to_nl = lambda do |env|
node = env[:node]
node_name = env[:node_name]
return if env[:is_whitelisted] || !node.element?
return unless node_name == 'br'
node.replace "\n"
end
Sanitize.clean s2, :transformers => [br_to_nl]
=> " here is para 1\n It's a nice paragraph Don't forget para 2 "
但是我无法想出一个适用于<p>
标签的解决方案。
我应该作为孩子向节点添加文本元素吗?如何在
元素之后立即显示它?
相关问题(已回答)How to use RubyGem Sanitize transformers to sanitize an unordered list into a comma seperated list?