profiteur-0.4.7.0: lib/embed/Profiteur/DataFile.hs
{-# LANGUAGE TemplateHaskell #-}
module Profiteur.DataFile (
includeFile,
module Profiteur.DataFile.Internal
) where
import Profiteur.DataFile.Internal
import System.IO (Handle)
import qualified Data.ByteString as B
import Data.FileEmbed
import Control.Arrow
import qualified Language.Javascript.JQuery as JQuery
import Language.Haskell.TH (runIO)
import Data.Maybe
includeFile :: Handle -> DataType -> IO ()
includeFile h filePath = B.hPutStr h $ data' filePath
where
data' JQueryFile = $(embedFile =<< runIO JQuery.file)
data' (DataFile fp) =
fromMaybe (error $ "No such datafile: " ++ fp) $ lookup fp dataDirContents
dataDirContents = map (first ("data/" ++)) $(embedDir "data")