Как заменить последнее свободное место на nbsp в ruby - PullRequest
0 голосов
/ 24 февраля 2020

Как я могу заменить последнее свободное место на   в ruby?

У меня в базе данных это:

<h1>Hello dear friend!</h1>
<p>How are you?</p>
<figure><img src="..." alt="..." /></figure>
<p>Bye!</p>

И мне нужно у меня есть «выходные данные»:

<h1>Hello dear&nbsp;friend!</h1>
<p>How are&nbsp;you?</p>
<figure><img src="..." alt="..." /></figure>
<p>Bye!</p>

Я пытался играть с нокогири:

text = Nokogiri::HTML::DocumentFragment.parse(...)
text.css('h1, h2, h3, h4, h5, h6, p, li').each do |tag|
  tag_arr = tag.content.split(' ')
  tag_last_words = tag_arr[tag_arr.length-2..tag_arr.length]
  tag_return = tag_arr[0..-2].push(tag_last_words.join('&nbsp;'))
  tag_return = tag_return.join(' ')
  tag.content = tag_return
end

, но я не могу победить некоторые «жучки»:

  • удаляются все атрибуты и внутренние теги (html)
  • вместо &nbsp; У меня &amp;nbsp;

Почему? Чтобы избежать переноса одного слова на новую строку на мобильном устройстве. (JS в моем случае не вариант)

...