如何为Ruby Sanitize Gem编写变换器以将转换成换行符?

时间:2012-02-14 23:26:34

标签: html ruby lambda sanitize

我正在使用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?

0 个答案:

没有答案