diff --git a/yesod/Yesod/Default/Util.hs b/yesod/Yesod/Default/Util.hs index 1edfcdfe..f0f1ef82 100644 --- a/yesod/Yesod/Default/Util.hs +++ b/yesod/Yesod/Default/Util.hs @@ -5,6 +5,7 @@ module Yesod.Default.Util ( addStaticContentExternal , globFile + , globFilePackage , widgetFileNoReload , widgetFileReload , TemplateLanguage (..) @@ -15,6 +16,7 @@ module Yesod.Default.Util ) where import qualified Data.ByteString.Lazy as L +import Data.FileEmbed (makeRelativeToProject) import Data.Text (Text, pack, unpack) import Yesod.Core -- purposely using complete import so that Haddock will see addStaticContent import Control.Monad (when, unless) @@ -64,6 +66,10 @@ addStaticContentExternal minify hash staticDir toRoute ext' _ content = do globFile :: String -> String -> FilePath globFile kind x = "templates/" ++ x ++ "." ++ kind +-- | `globFile` but returned path is absolute and within the package the Q Exp is evaluated +globFilePackage :: String -> String -> Q FilePath +globFilePackage = (makeRelativeToProject <$>) . globFile + data TemplateLanguage = TemplateLanguage { tlRequiresToWidget :: Bool , tlExtension :: String diff --git a/yesod/yesod.cabal b/yesod/yesod.cabal index 395ba575..aabb3105 100644 --- a/yesod/yesod.cabal +++ b/yesod/yesod.cabal @@ -25,6 +25,7 @@ library , data-default-class , directory , fast-logger + , file-embed , monad-logger , shakespeare , streaming-commons