# LANGUAGE TemplateHaskell #

module Settings.StaticFiles where

import Prelude (IO)
import Yesod.Static
import qualified Yesod.Static as Static
import Settings (staticDir)
import Settings.Development
import Language.Haskell.TH (Q, Exp, Name)
import Data.Default (def)

-- | use this to create your static file serving site
staticSite :: IO Static.Static
staticSite = if development then Static.staticDevel staticDir
                            else Static.static      staticDir

-- | This generates easy references to files in the static directory at compile time,
--   giving you compile-time verification that referenced files exist.
--   Warning: any files added to your static directory during run-time can't be
    accessed this way . You 'll have to use their FilePath or URL to access them .
$(staticFiles Settings.staticDir)

combineSettings :: CombineSettings
combineSettings = def

  The following two functions can be used to combine multiple CSS or JS files
-- at compile time to decrease the number of http requests.
-- Sample usage (inside a Widget):
--
  > $ ( combineStylesheets ' StaticR [ style1_css , style2_css ] )

combineStylesheets :: Name -> [Route Static] -> Q Exp
combineStylesheets = combineStylesheets' development combineSettings

combineScripts :: Name -> [Route Static] -> Q Exp
combineScripts = combineScripts' development combineSettings

 | use this to create your static file serving site
 | This generates easy references to files in the static directory at compile time,
   giving you compile-time verification that referenced files exist.
   Warning: any files added to your static directory during run-time can't be
 at compile time to decrease the number of http requests.
 Sample usage (inside a Widget):

# LANGUAGE TemplateHaskell #

module Settings.StaticFiles where

import Prelude (IO)
import Yesod.Static
import qualified Yesod.Static as Static
import Settings (staticDir)
import Settings.Development
import Language.Haskell.TH (Q, Exp, Name)
import Data.Default (def)

staticSite :: IO Static.Static
staticSite = if development then Static.staticDevel staticDir
                            else Static.static      staticDir

    accessed this way . You 'll have to use their FilePath or URL to access them .
$(staticFiles Settings.staticDir)

combineSettings :: CombineSettings
combineSettings = def

  The following two functions can be used to combine multiple CSS or JS files
  > $ ( combineStylesheets ' StaticR [ style1_css , style2_css ] )

combineStylesheets :: Name -> [Route Static] -> Q Exp
combineStylesheets = combineStylesheets' development combineSettings

combineScripts :: Name -> [Route Static] -> Q Exp
combineScripts = combineScripts' development combineSettings
