1

テキスト/コンテンツを含む最後のタグの上と後の空白を削除する必要があります。ビジュアルを「壊す」のではなく、クライアントに表示されるコンテンツを制御したい。

<p> <br> </p>   ~> remove
<p> <br> </p>   ~> remove
<p> Text <p>
<p> <br> </p>   ~> should preserve only this of the empty tags
<p> Text </p>
<p> Text </p>
<p> <br> </p>   ~> remove
<p> <br> </p>   ~> remove
<p> <br> </p>   ~> remove

サニタイズを使用していますが、トランスフォーマーを通過する能力があります。ドキュメントには、すべての空の要素を削除するスニペットの例が示されています。

通常の要素の前に空の要素を削除するには、空のタグの削除を停止するタイミングを制御する変数を割り当てることができると考えました。

should_remove_empty = true
lambda {|env|
  node = env[:node]
  return unless node.elem?

  unless node.children.any?{|c| c.text? && c.content.strip.length > 0 || !c.text? }
    node.unlink if should_remove_empty
  else
    should_remove_empty = false
  end
}

しかし今、末尾の空の要素を削除するには、逆さまに反復する必要があります。しかし、サニタイズは私にこの能力を与えません。

誰かがこれを行う方法を知っていますか、または誰かがすでに実装していますか?

4

1 に答える 1