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 ?
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 ?
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>
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)