{-# LANGUAGE OverloadedStrings #-} import Hakyll import Data.List import Data.List.Split config :: Configuration config = defaultConfiguration { providerDirectory = "docs/build" } hackage :: String -> String hackage xs = fixUrl $ splitWhen (=='/') xs where fixUrl ("..":package:ys) = "https://hackage.haskell.org/package/" ++ package ++ "/docs/" ++ intercalate "/" ys fixUrl zs = intercalate "/" zs main :: IO () main = do hakyllWith config $ do match "Network-*.html" $ do route idRoute compile $ fmap (withUrls hackage) <$> (relativizeUrls =<< getResourceString) match "index.html" $ do route idRoute compile $ relativizeUrls =<< getResourceString match "*.css" $ do route idRoute compile $ relativizeUrls =<< getResourceString match "*.js" $ do route idRoute compile $ relativizeUrls =<< getResourceString