Как сделать таблицу с помощью Redcarpet и Markdown - программирование
Подтвердить что ты не робот

Как сделать таблицу с помощью Redcarpet и Markdown

Я пытаюсь сделать таблицу, подобную этой, с помощью Redcarpet

| header 1 | header 2 |
| -------- | -------- |
| cell 1   | cell 2   |
| cell 3   | cell 4   |

но он не работает.

Можно ли отобразить таблицу с помощью Redcarpet?

4b9b3361

Ответ 1

Да, вы можете отобразить такую ​​таблицу, но вам нужно включить параметр :tables.

require 'redcarpet'
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :tables => true)

text = <<END
| header 1 | header 2 |
| -------- | -------- |
| cell 1   | cell 2   |
| cell 3   | cell 4   |
END

puts markdown.render(text)

Выходы:

<table><thead>
<tr>
<th>header 1</th>
<th>header 2</th>
</tr>
</thead><tbody>
<tr>
<td>cell 1</td>
<td>cell 2</td>
</tr>
<tr>
<td>cell 3</td>
<td>cell 4</td>
</tr>
</tbody></table>

Ответ 2

Принятый ответ для формата таблицы велик. Попытка добавить это как комментарий теряет форматирование. Однако добавление его в качестве ответа несколько сомнительно.

В любом случае... это ответ на вопрос об использовании опции таблицы markdown с haml (в контексте Rails).

application_helper.rb

  def markdown(content)
    return '' unless content.present?
    @options ||= {
        autolink: true,
        space_after_headers: true,
        fenced_code_blocks: true,
        underline: true,
        highlight: true,
        footnotes: true,
        tables: true,
        link_attributes: {rel: 'nofollow', target: "_blank"}
    }
    @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, @options)
    @markdown.render(content).html_safe
  end

Затем в представлении (views/product_lines/show.html.haml):

= markdown(product_line.description)