If you use haml as rails view template, you can write portion of your page using markdown by using the ":markdown" filter.
Is is possible to do the same using erb?
If you use haml as rails view template, you can write portion of your page using markdown by using the ":markdown" filter.
Is is possible to do the same using erb?
ERB does not have filtering like this built-in. You'll need to directly use a gem that handles it, like RDiscount or the venerable BlueCloth.
It's pretty easy to write a method that does it, assuming you're using something like Rails which has #capture
, #concat
, and #markdown
helpers. Here's an example, using Maruku:
def markdown_filter(&block)
concat(markdown(capture(&block)))
end
Then you can use this as so:
<% markdown_filter do %>
# Title
This is a *paragraph*.
This is **another paragraph**.
<% end %>
There are a few things to note here. First, it's important that all the text in the block have no indentation; you could get around this by figuring out the common indentation of the lines and removing it, but I didn't do that in the example helper above. Second, it uses Rails' #markdown
helper, which could easily be implemented in other frameworks as so (replacing Maruku
with your Markdown processor of choice):
def markdown(text)
Maruku.new(text).to_html
end
Finally, it would work a little differently in Rails 3, since Rails 3 allows block helpers to return strings. Here's how it would be written there:
def markdown_filter(&block)
markdown(capture(&block)).html_safe
end
And used as so:
<%= markdown_filter do %>
# Title
This is a *paragraph*.
This is **another paragraph**.
<% end %>