2010-08-13 13 views
16

Me gusta mucho Markdown (probablemente por SO) y me gusta programar en Haskell. Recientemente descubrí Literate Haskell (LHS) y quiero usar Markdown y LHS juntos. Te voy a dar este ejemplo tonto:LHS y Markdown: Codeblocks

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? 

Eso es un ejemplo de un archivo de Haskell leer y escribir escrito para ser analizada por Markdown más tarde. Sin embargo, quiero que el código aparezca realmente en los bloques de código html y sin los> antes que ellos. Por lo tanto, no puedo simplemente sangrar todas las líneas de código por cuatro porque eso produciría la marca de reducción que ves arriba. Básicamente, quiero que el html para salir de esta manera:

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

Lo que hay que notar es que no tiene> símbolos. ¿Como podría hacerlo?

+0

Ahora, evidentemente, yo podría tirar el archivo de .lhs a través de una sed 's^_> _ _', pero realmente no quiero. Prefiero algo construido en función que no sabía. –

Respuesta

17

Use Pandoc. Tiene un modo markdown+lhs para usar el descuento en archivos Haskell literales, y si no le gusta el html que produce, existe an api para modificar la estructura del documento.

instalarlo con

cabal install pandoc 
+6

Robert, el html pegado aquí http://hpaste.org/fastcgi/hpaste.fcgi/raw?id=29029 es el resultado de cortar su rebaja y pegarlo en 'pandoc' con ' pbpaste | pandoc -r markdown + lhs -w html -s | pbcopy' En caso de que se ocupe de escribir un blog en Haskell ... tenga en cuenta que * puede * pedirle a 'pandoc' que escriba' literate html' con bird-tracks: 'pbpaste | pandoc -r markdown + lhs -w html + lhs | pbpaste' - entonces obtendrías esto: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=29030 El html está extrañamente, pero legalmente, formateado; puedes deshacerte de esto pasándolo por 'tidy'. – applicative

+0

Esa es una respuesta excelente, tanto Dave como aplicativo. Gracias, esto fue exactamente lo que estaba buscando. Marcado como respuesta. –

+0

Y para prepararlo para su publicación en StackOverflow (como el marcado normal, sin trucos .lhs), uno puede hacer 'pandoc --desde markdown + lhs --to markdown'! (Solo los comentarios al estilo HTML en el marcado de origen se tratan de forma incorrecta. Los uso para almacenar variables de Emacs al final del archivo). –