2010-08-13 7 views
16

Il m'arrive d'aimer Markdown (probablement à cause de SO) et j'aime programmer dans Haskell. J'ai récemment découvert Literate Haskell (LHS) et je veux utiliser Markdown et LHS ensemble. Permettez-moi de vous donner cet exemple stupide:LHS et Markdown: blocs de code

Crazy Literate Haskell 
====================== 

This is an example of some literate Haskell Code: 

> module Main where 

Look at that IO Monad work: 

> main = return 2 >>= print 

Wasn't that cool? 

C'est un exemple d'un fichier haskell lettré écrit à être analysé par Markdown plus tard. Cependant, je veux que le code apparaisse réellement dans les blocs de code html et sans le> devant eux. Par conséquent, je ne peux pas simplement indenter toutes les lignes de code par quatre car cela produirait la démarque que vous voyez ci-dessus. Au fond, je veux que le html à venir comme ceci:

<h1>Crazy Literate Haskell</h1> 

<p>This is an example of some literate Haskell Code:</p> 

<pre><code>module Main where 
</code></pre> 

<p>Look at that IO Monad work:</p> 

<pre><code>main = return 2 &gt;&gt;= print 
</code></pre> 

<p>Wasn't that cool?</p> 

La chose à remarquer est qu'il n'a pas> symboles. Comment ferais-je cela?

+0

Maintenant, évidemment, je pourrais jeter le fichier .lhs par un sed « s _ ^> _ _ » mais je ne veux pas vraiment. Je préférerais une fonction intégrée que je ne connaissais pas. –

Répondre

17

Utilisez Pandoc. Il a un mode markdown+lhs pour utiliser markdown dans les fichiers littéraux Haskell, et si vous n'aimez pas le html qu'il produit, il y a an api pour modifier la structure du document.

installer avec

cabal install pandoc 
+6

Robert, le html collé ici http://hpaste.org/fastcgi/hpaste.fcgi/raw?id=29029 est le résultat de couper votre démarque et de le coller à 'pandoc' avec ' pbpaste | pandoc -r démarque + lhs -w html -s | pbcopy' Juste au cas où vous accepteriez l'écriture de blog Haskell ... notez que vous pouvez * demander * 'pococ' pour écrire' literate html' avec bird-tracks: 'pbpaste | pandoc -r démarque + lhs -w html + lhs | pbpaste' - alors vous obtiendrez ceci: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=29030 Le code HTML est bizarrement, mais légalement, formaté; vous pouvez vous en débarrasser en le passant par 'tidy'. – applicative

+0

C'est une excellente réponse, à la fois Dave et applicative. Merci, c'était exactement ce que je cherchais. Marquage comme réponse. –

+0

Et pour le préparer à la publication sur StackOverflow (comme une démarque normale, sans astuces .lhs), on peut faire 'pandoc --from markdown + lhs --to markdown'! (Seuls les commentaires de style HTML dans la liste des sources sont traités de manière incorrecte Je les utilise pour stocker les variables Emacs à la fin du fichier.) –