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 がわからんみたいです.