2010-05-28 20 views

Répondre

1

ERB n'a pas de filtrage comme celui-ci. Vous aurez besoin d'utiliser directement une gemme qui le gère, comme RDiscount ou le vénérable BlueCloth.

+1

Pour être honnête, Haml ne possède pas non plus de support Markdown: il utilise toutes les gammes Markdown disponibles sur le système. Aussi, je recommanderais la bibliothèque pure-Ruby Maruku sur les RDiscount et BlueCloth basés sur C, à moins que la vitesse soit un problème sérieux (ce qui ne devrait pas être avec une bonne mise en cache). –

9

Il est assez facile d'écrire une méthode qui le fait, en supposant que vous utilisez quelque chose comme Rails qui a #capture, #concat, et #markdown helpers. Voici un exemple, en utilisant Maruku:

def markdown_filter(&block) 
    concat(markdown(capture(&block))) 
end 

Ensuite, vous pouvez l'utiliser comme ceci:

<% markdown_filter do %> 
# Title 

This is a *paragraph*. 

This is **another paragraph**. 
<% end %> 

Il y a quelques petites choses à noter ici. Tout d'abord, il est important que tout le texte du bloc n'ait pas d'indentation; vous pouvez contourner ce problème en trouvant l'indentation commune des lignes et en la supprimant, mais je ne l'ai pas fait dans l'exemple ci-dessus. En second lieu, il utilise aide Rails #markdown, qui pourrait facilement être mis en œuvre dans d'autres cadres comme si (remplacement Maruku avec votre processeur Markdown de choix):

def markdown(text) 
    Maruku.new(text).to_html 
end 

Rails 3 a supprimé l'aide #markdown, donc il suffit d'ajouter ci-dessus code dans l'assistant approprié, en substituant le processeur Markdown de votre choix.

+0

Merci pour le pointeur. –