Markdown Render Newlines - PullRequest
       9

Markdown Render Newlines

0 голосов
/ 18 октября 2018

Я работаю над проектом и даю пользователю возможность создать сообщение.При загрузке сообщения я вызываю метод markdown , чтобы извлечь ссылки и отформатировать текст.

Теперь у меня проблема.Записав «1. Пример» Вывод в сообщении представляет собой список.Просто написав «1.Пример» _ без пробела между точкой и текстом, все работает нормально.Мой метод уценки:

@preview = nil
options = {
  autolink: true,
  hard_wrap: true
}
begin
  URI.extract(text, ['http', 'https', 'www']).each do |uri|
    unless text.include?("<a")
      text = text.gsub( uri, "<a href=\"#{uri}\" target=\"_blank\">#{uri}</a>" )
      @preview = LinkThumbnailer.generate(uri)
    end
  end
rescue OpenSSL::SSL::SSLError => e
end


renderer = Redcarpet::Render::HTML.new(options)
markdown = Redcarpet::Markdown.new(renderer)

markdown.render(text).html_safe

Можете ли вы знать, как это исправить .. Мне не нужен список, я просто хочу, чтобы вывод был таким же, как вход!

Спасибо, что уделили время!

РЕДАКТИРОВАТЬ Добавлена ​​фотография, чтобы показать вывод. enter image description here

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Вы хотите использовать обратную косую черту в вашем источнике Markdown.Как объясняют правила:

Markdown позволяет вам использовать экранирование обратной косой черты для генерации литеральных символов, которые в противном случае имели бы особое значение в синтаксисе форматирования Markdown.

Среди символов, которые имеют обратную реакциюВыход из поддержки - это точка (.).Поэтому ваш исходный текст должен выглядеть следующим образом:

1\. Example

Что приводит к следующему HTML:

<p>1. Example</p>

И выводится как:

1.Пример

0 голосов
/ 18 октября 2018

По умолчанию вы получите список.В конце концов, Markdown ищет синтаксис, который он распознает, чтобы сгенерировать разметку.

Чтобы пропустить определенные функции уценки, я думаю, что вам нужно будет предоставить собственный пользовательский рендерер .

Если вы определяете новый рендерер:

class NoListRenderer < Redcarpet::Render::HTML
  def list(contents, list_type)
    contents
  end

  def list_item(text, list_type)
    text
  end
end

и используете его экземпляр вместо класса рендерера по умолчанию при создании вашего экземпляра markdown, он должен пропустить обработку списка по умолчанию.,(NB. Я не проверял этот код):

renderer = NoListRenderer.new(options)
markdown = Redcarpet::Markdown.new(renderer)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...