WikiParser の実装2
ということで,全部読んだら,同じようなことが書いてありました.
考えとしては,
MyParser を実装して,import Parsec しておいて,
徐々に hiding → 最後はimport Parsec を消す感じでいかがか.と
ということで,12章を読み返すと,p303 リスト12.7で
viewPageResponse name = do body <- pageHTML db name html <- fill "view" name body return (HTTPResponse pageContentType html)
とある.fill は,テンプレートの処理なので,
pageHTML の中でWiki 記法の変換をしているようだ.
更に,13章p323 リスト13.3 にて,
pageHTML db name = do text <- pageSource db name return $ htmlToText href (compile text) href (PageLink name) = a_href (pageURL umap name) name
とある.compile 関数がIO String をなんとかしているようだ.
(pageSource :: Database -> String -> IO String p307 だから)
ということで,Main.hs は,以下のような感じで始まれば良いのではないかと思う.
main = do cs <- getContents htmlToText emptyHref (compile cs) -- htmlToText の定義 emptyHref :: Href -> String emptyHref (PageLink name) = a_href "nolink" name -- compile の定義 :
とあいえ,Parser がわからんみたいです.