module Snap.Snaplet.Sass.Internal
(
Sass (..)
, CompileMode (..)
, Style (..)
, srcDir
, destDir
, createDirUnlessExists
, compileModeFromString
, styleFromString
, verbosePut
) where
import Control.Monad
import System.Directory
import System.FilePath ((</>))
data Sass = Sass {
snapletFilePath :: FilePath
, compileMode :: CompileMode
, style :: Style
, sourcemap :: Bool
, verbose :: Bool
} deriving (Show)
data CompileMode
= Development
| Production
deriving (Eq, Show)
data Style
= Nested
| Compact
| Compressed
| Expanded
deriving (Eq, Show)
srcDir :: Sass -> FilePath
srcDir = (</> "src") . snapletFilePath
destDir :: Sass -> FilePath
destDir = (</> "css") . snapletFilePath
createDirUnlessExists :: FilePath -> IO ()
createDirUnlessExists fp = do
dirExists <- doesDirectoryExist fp
unless dirExists $ createDirectory fp
compileModeFromString :: String -> Maybe CompileMode
compileModeFromString "Development" = Just Development
compileModeFromString "Production" = Just Production
compileModeFromString _ = Nothing
styleFromString :: String -> Maybe Style
styleFromString "nested" = Just Nested
styleFromString "compact" = Just Compact
styleFromString "compressed" = Just Compressed
styleFromString "expanded" = Just Expanded
styleFromString _ = Nothing
verbosePut :: Sass -> String -> IO ()
verbosePut config = when (verbose config) . putStrLn . ("snaplet-sass: " ++ )