happstack-yui-7351.3.0: src/Happstack/Server/YUI/Bundle.hs
{-# LANGUAGE CPP, TemplateHaskell #-}
module Happstack.Server.YUI.Bundle
( isYUIFile
, readYUIFile
) where
import Data.ByteString (ByteString)
#if EMBED
import Data.FileEmbed (embedDir)
import Data.Map (Map, (!), fromList, member)
#else
import Paths_happstack_yui (getDataFileName)
import System.Directory (doesFileExist)
import qualified Data.ByteString as B
#endif
#if EMBED
bundle :: Map FilePath ByteString
bundle = fromList $(embedDir "bundle")
#endif
-- | Tells if a file is included in the YUI bundle.
--
-- >>> isYUIFile "yui/yui-min.js"
-- True
isYUIFile :: FilePath -> IO Bool
#if EMBED
isYUIFile name = return $ member name bundle
#else
isYUIFile name = getDataFileName ("bundle/" ++ name) >>= doesFileExist
#endif
-- | Reads the contents of a file included in the YUI bundle.
readYUIFile :: FilePath -> IO ByteString
#if EMBED
readYUIFile name = return $ bundle ! name
#else
readYUIFile name = getDataFileName ("bundle/" ++ name) >>= B.readFile
#endif