text.gsub!(/\r\n?/, "\n")
Должно быть
text.gsub!(/\r?\n/, "\n")
В своем регулярном выражении вы можете заглянуть в упреждающий просмотр и посмотреть, есть ли у вас тег таблицы (в зависимости от версии ruby, которую вы 'Это может быть недоступно для вас).Вместо этого вы можете просто запустить свой метод, разделив строку на теги таблицы, что даст вам нечетное количество строк.Запускайте регулярные выражения выше только для четных индексированных строк.Затем объедините строки вместе с табличными тегами.Это позволит вам правильно завершать и запускать теги абзаца и игнорировать разрывы строк в таблицах.
def simple_format( text )
strings = text.split(/<\/?table>/)
strings.each_with_index do |i, string|
if i % 2 == 0 # even index == outside of table tags
string.gsub!(/\r?\n/, "\n") # \r\n and \r => \n
# ...
strings[i] = "<p>" + string + "</p>"
else # odd index == inside of table tags
strings[i] = "<table>" + string + "</table>"
end
end
strings.join
end
Тем не менее, вы можете полностью отказаться от регулярного выражения для этого решения, которое я описалПредполагается, что в тегах таблиц или в неопределенных тегах таблиц нет тегов таблицы.