Использование Nokogiri для переноса корневых текстовых узлов в ‹p›, сохраняя при этом ‹a› и ‹span› внутри ‹p›

'Дана строка, которая выглядит так:

"<a href='/'>I am a link.<a> And I am a paragraph, maybe <span>with a span</span>.<br/>And I'm another paragraph."

... как я могу использовать Nokogiri для разумного переноса абзацев в <p>, включая встроенные элементы, а также удаляя <br/>, чтобы вывод был примерно таким:

"<p><a href='/'>I am a link.<a> And I am a paragraph, maybe <span>with a span</span>.</p><p>And I'm another paragraph.</p>"

person Lail    schedule 12.04.2012    source источник
comment
возможен дубликат? stackoverflow.com/questions/8937846/   -  person John Douthat    schedule 13.04.2012
comment
Это решение оставляет <a> и <span> за пределами <p> и возвращает полный HTML-документ, а не размеченный фрагмент.   -  person Lail    schedule 13.04.2012


Ответы (1)


Правильный способ, вероятно, использовать xslt, но если вы имеете дело только с короткими фрагментами, вам может сойти с рук:

str.split('<br/>').map{|p| '<p>' + p + '</p>'}.join
person pguardiario    schedule 13.04.2012