How to render table with Redcarpet and Markdown

余生长醉 提交于 2019-12-03 06:48:10

问题


I'm trying to render a table like this with Redcarpet

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

but it's not working.

Is it possible to render a table with Redcarpet ?


回答1:


Yes, you can render a table like that, but you have to enable the :tables option.

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)

Outputs:

<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:


The accepted answer for table format is great. Trying to add this as a comment loses formatting. Yet adding it as an answer is somewhat questionable as well.

Anyway... this is in response to the question about using markdown table option with haml (in the context of 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

Then in a view (views/product_lines/show.html.haml):

= markdown(product_line.description)


来源:https://stackoverflow.com/questions/12296453/how-to-render-table-with-redcarpet-and-markdown

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!