1. Мотивация
Я пишу свою собственную мини-вики. Я хочу иметь возможность легко конвертировать из уценки в LATEX/HTML и наоборот. После некоторых поисков я обнаружил Pandoc, который написан на Haskell и что я могу использовать модуль FastCGI для запуска Программа Haskell на моем сервере Apache.
2. Проблема/вопрос
Я не уверен, какой протокол я должен использовать для отправки моего скрипта FastCGI переменных ввода/вывода (POST/GET?) и как именно это делается. Есть идеи, предложения, решения?
3. Предпринятые шаги
3.1 Попытка
Вот что я сделал до сих пор (на основе примера кода). Обратите внимание, у меня нет опыта работы с Haskell, и на данный момент у меня не так много времени на изучение языка. Мне бы очень хотелось иметь возможность использовать инструмент преобразования текстового формата pandoc.
module Main ( main ) where
import Control.Concurrent
import Network.FastCGI
import Text.Pandoc
--initialize Variables/ functions
fastcgiResult :: CGI CGIResult
markdownToHTML:: String -> String
--implement conversion function
markdownToHTML s = writeLaTeX defaultWriterOptions {writerReferenceLinks = True} (readMarkdown defaultParserState s)
--main action
fastcgiResult = do
setHeader "Content-type" "text/plain"
n <- queryString
output $ (markdownToHTML n)
main :: IO ()
main = runFastCGIConcurrent' forkIO 10 fastcgiResult
Этот код считывает строку после вопросительного знака в URL-адресе запроса. Но это не очень хорошее решение, так как некоторые символы опускаются (например, «#»), а пробелы заменяются на /20%.
Заранее спасибо.
3.2 Сеть.CGI
Документация находится здесь. Под заголовком «Ввод» есть несколько способов ввода. Какой из них мне подходит?
Is it :
Получить значение входной переменной, например, из формы. Если переменная имеет несколько значений, возвращается первое из них. Пример:
query <- getInput "query"
Итак, скажем, у меня есть форма HTML POST с name='Joe'
, могу ли я получить ее с помощью getInput? И если да, то как мне обрабатывать тип Maybe String
?