-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Use Template Haskell to embed file contents directly.
--   
--   Use Template Haskell to read a file or all the files in a directory,
--   and turn them into (path, text) pairs embedded in your haskell code.
@package file-embed
@version 0.0.6


-- | This module uses template Haskell. Following is a simplified
--   explanation of usage for those unfamiliar with calling Template
--   Haskell functions.
--   
--   The function <tt>embedFile</tt> in this modules embeds a file into the
--   exceutable that you can use it at runtime. A file is represented as a
--   <tt>ByteString</tt>. However, as you can see below, the type signature
--   indicates a value of type <tt>Q Exp</tt> will be returned. In order to
--   convert this into a <tt>ByteString</tt>, you must use Template Haskell
--   syntax, e.g.:
--   
--   <pre>
--   $(embedFile "myfile.txt")
--   </pre>
--   
--   This expression will have type <tt>ByteString</tt>. Be certain to
--   enable the TemplateHaskell language extension, usually by adding the
--   following to the top of your module:
--   
--   <pre>
--   {-# LANGUAGE TemplateHaskell #-}
--   </pre>
module Data.FileEmbed

-- | Embed a single file in your source code.
--   
--   <pre>
--   import qualified Data.ByteString
--   
--   myFile :: Data.ByteString.ByteString
--   myFile = $(embedFile "dirName/fileName")
--   </pre>
embedFile :: FilePath -> Q Exp

-- | Embed a single existing file in your source code out of list a list of
--   paths supplied.
--   
--   <pre>
--   import qualified Data.ByteString
--   
--   myFile :: Data.ByteString.ByteString
--   myFile = $(embedFile' [ "dirName/fileName", "src/dirName/fileName" ])
--   </pre>
embedOneFileOf :: [FilePath] -> Q Exp

-- | Embed a directory recursively in your source code.
--   
--   <pre>
--   import qualified Data.ByteString
--   
--   myDir :: [(FilePath, Data.ByteString.ByteString)]
--   myDir = $(embedDir "dirName")
--   </pre>
embedDir :: FilePath -> Q Exp

-- | Get a directory tree in the IO monad.
--   
--   This is the workhorse of <a>embedDir</a>
getDir :: FilePath -> IO [(FilePath, ByteString)]
dummySpace :: Int -> Q Exp
inject :: ByteString -> ByteString -> Maybe ByteString
injectFile :: ByteString -> FilePath -> FilePath -> IO ()
stringToBs :: String -> ByteString
