ruby nl2br снаружи <code>... </code> - PullRequest
0 голосов
/ 09 марта 2010

Я боролся с этим в течение недели, не имея возможности найти то, что искал.

Вот что я хотел бы сделать:

Я создаю вики, где я могу опубликовать все свои знания (да, я знаю пару вещей: p), но я не могу представить их так, как мне бы хотелось. Тела моих постов - это текстовые поля. Чтобы правильно их отобразить, я запускаю следующую команду:

@post.body.gsub("\n", "<br />")

У меня также есть несколько тегов с кодом внутри, который выглядит следующим образом: мой код .

А вот и проблема. Каждая строка между тегами и изменяется на
, но она не отображается правильно, так как я использую шаблон визуализации кода.

Поэтому я хотел бы знать, есть ли способ изменить все \ n на
, кроме тех, которые находятся между и

Спасибо всем за то, что прочитали это и помогли мне.

PS: Пожалуйста, не учитывайте пробелы после <в каждом теге. Я должен был сделать это, чтобы "пробел" их. </p>

Julien

1 Ответ

0 голосов
/ 16 апреля 2010

simple_format заменит ваш \n на <br/> и удвоит \n\n на <p></p> http://apidock.com/rails/ActionView/Helpers/TextHelper/simple_format

А вот вспомогательный метод для вашей проблемы

def text_format(text)
  reg = /(<code>[.|\W|\w]+<\/code>)/
  text.split(reg).map{|t| t =~ reg ? t : t.gsub(/\n/, "<br />") }.join()
end

text = 'Hello pedro!

        Here is my code:

        <code>
          def text_format(text)
            reg = /(<code>[.|\W|\w]+<\/code>)/
            text.split(reg).map{|t| t =~ reg ? t : t.gsub(/\n/, "<br />") }.join()
          end
        </code>

        Good luck!'

text_format text
#=> "Hello pedro!<br /><br />Here is my code:<br /><br /><code>\n  def text_format(text)\n    reg = /(<code>[.|\\W|\\w]+<\\/code>)/\n    text.split(reg).map{|t| t =~ reg ? t.gsub(/\\n/, "<br />") : t }.join()\n  end\n</code><br /><br />Good luck!"
...