packages feed

miso-css-0.0.1: src/Miso/Css/IncludeCss.hs

module Miso.Css.IncludeCss (includeCss) where

import AddDependentFile ( (</>), addDependentFile, getPackageRoot )
import Miso.Css.Escape ( escapeValIden )
import Miso.Css.Qq (cssToDecs')
import Language.Haskell.TH.Syntax ( mkName, Q, Dec, runIO )
import Miso.Css.Prelude
    ( ($), Maybe(Just), (=<<), (<$>), readFile, FilePath )
import System.FilePath (takeBaseName)

-- | like css quasi quoter but
-- css input is exported via constant equal to base file name
-- instead of cssAsLiteralText.
includeCss :: FilePath -> Q [Dec]
includeCss p = do
  ap <- (</> p) <$> getPackageRoot
  addDependentFile ap
  cssToDecs' (mkName (escapeValIden $ takeBaseName p)) (Just ap)  =<< runIO (readFile ap)