{-# LANGUAGE CPP #-} module Utils ( baseDir, rootDir , srcDir, refDir, outDir, refDir', outDir' , haddockPath , stripLocalAnchors, stripLocalLinks, stripLocalReferences ) where import Data.List import System.FilePath baseDir, rootDir :: FilePath baseDir = takeDirectory __FILE__ rootDir = baseDir ".." srcDir, refDir, outDir, refDir', outDir' :: FilePath srcDir = baseDir "src" refDir = baseDir "ref" outDir = baseDir "out" refDir' = refDir "src" outDir' = outDir "src" haddockPath :: FilePath haddockPath = rootDir "dist" "build" "haddock" "haddock" replaceBetween :: Eq a => [a] -> a -> [a] -> [a] -> [a] replaceBetween _ _ _ [] = [] replaceBetween pref end val html@(x:xs') = case stripPrefix pref html of Just strip -> pref ++ val ++ (replaceBetween' . dropWhile (/= end)) strip Nothing -> x:(replaceBetween' xs') where replaceBetween' = replaceBetween pref end val stripLocalAnchors :: String -> String stripLocalAnchors = replaceBetween " String stripLocalLinks = replaceBetween " String stripLocalReferences = stripLocalLinks . stripLocalAnchors