2010-08-13 3 views
16

Мне очень нравится Markdown (возможно, из-за SO), и мне нравится программировать в Haskell. Недавно я обнаружил Literate Haskell (LHS), и я хочу использовать Markdown и LHS вместе. Позвольте мне дать вам этот тупой пример:LHS и 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? 

Это является примером грамотного файла Haskell, написанного быть разобрано Markdown позже. Тем не менее, я хочу, чтобы код действительно отображался в html-блоках кода и без> перед ними. Поэтому я не могу просто отбросить все строки кода на четыре, потому что это приведет к уценке, которую вы видите выше. В принципе, я хочу, чтобы html выглядел следующим образом:

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

Следует отметить, что у него нет символов>. Как мне это сделать?

+0

Теперь очевидно, что я мог бы бросить в .lhs файл через СЭД «s _ ^> _ _», но я не хочу. Я бы предпочел какую-то встроенную функцию, о которой я не знал. –

ответ

17

Использование Pandoc. Он имеет режим markdown+lhs для использования уценки в буквальных файлах Haskell, и если вам не нравится html, который он производит, для изменения структуры документа существует an api.

Установите его с

cabal install pandoc 
+6

Robert, html, вставленный здесь http://hpaste.org/fastcgi/hpaste.fcgi/raw?id=29029, является результатом сокращения вашей уценки и вставки ее в 'pandoc' с помощью ' pbpaste | pandoc -r markdown + lhs -w html -s | pbcopy' На всякий случай вы занимаетесь написанием блога Haskell ... обратите внимание, что вы * можете * попросить 'pandoc' написать' грамотный html' с птицами: 'pbpaste | pandoc -r markdown + lhs -w html + lhs | pbpaste' - тогда вы получите следующее: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=29030 html странно, но юридически, отформатирован; вы можете избавиться от этого, передав его через 'tidy'. – applicative

+0

Это отличный ответ, как Дейв, так и аппликативный. Спасибо, это именно то, что я искал. Маркировка как ответ. –

+0

И подготовить его для публикации на StackOverflow (как обычная уценка, без трюков .lhs), можно сделать 'pandoc --from markdown + lhs - to markdown'! (Только комментарии HTML-стиля в исходной метке будут обработаны неправильно. Я использую их для хранения переменных Emacs в конце файла.) –

Смежные вопросы