module Text.Shakespeare.Sass
( wsass'
, wfsSass
) where
import Text.Sass
import Language.Haskell.TH
import Yesod.Default.Util (WidgetFileSettings, TemplateLanguage (..)
,defaultTemplateLanguages, wfsLanguages)
import Yesod.Core
wsass' :: [FilePath] -> FilePath -> Q Exp
wsass' incPath fileName = do
css <- runIO $ compileSassFile (Just incPath) fileName
[| CssBuilder $(stringE css) |]
compileSassFile :: Maybe [FilePath] -> FilePath -> IO String
compileSassFile incPath fileName = do
result <- compileFile fileName ( def { sassIncludePaths = incPath } )
case result of
Left err -> do
err' <- errorMessage err
error err'
Right compiled -> return . resultString $ compiled
wfsSass :: [FilePath] -> WidgetFileSettings
wfsSass sassInclude = def { wfsLanguages = \hset -> defaultTemplateLanguages hset ++
[ TemplateLanguage True "sass" wsass wsass
, TemplateLanguage True "scss" wsass wsass
] }
where
wsass = wsass' sassInclude