From 627875a17fa9a7ad9e22456aa52ed208052b06e5 Mon Sep 17 00:00:00 2001 From: Braden Walters Date: Sat, 22 Aug 2015 01:11:54 +0200 Subject: [PATCH] Determine whether file is SASS or SCSS --- hakyll-sass.cabal | 2 +- src/Hakyll/Web/Sass.hs | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/hakyll-sass.cabal b/hakyll-sass.cabal index 74a8fa2..c32c7e1 100644 --- a/hakyll-sass.cabal +++ b/hakyll-sass.cabal @@ -1,5 +1,5 @@ name: hakyll-sass -version: 0.1.0.0 +version: 0.1.0 synopsis: Hakyll SASS compiler over hsass license: MIT license-file: LICENSE diff --git a/src/Hakyll/Web/Sass.hs b/src/Hakyll/Web/Sass.hs index a25adb5..0657b0c 100644 --- a/src/Hakyll/Web/Sass.hs +++ b/src/Hakyll/Web/Sass.hs @@ -14,12 +14,24 @@ import Hakyll.Core.Compiler import Hakyll.Core.Item import System.IO.Unsafe import Text.Sass.Compilation +import Text.Sass.Options -- | Compiles a SASS file into CSS. sassCompiler :: Compiler (Item String) sassCompiler = do bodyStr <- itemBody <$> getResourceBody - resultOrErr <- unsafeCompiler (compileString bodyStr def) - case resultOrErr of - Left sassError -> fail (unsafePerformIO $ errorMessage sassError) - Right result -> makeItem result + extension <- getUnderlyingExtension + let mayOptions = selectFileType def extension + case mayOptions of + Just options -> do + resultOrErr <- unsafeCompiler (compileString bodyStr options) + case resultOrErr of + Left sassError -> fail (unsafePerformIO $ errorMessage sassError) + Right result -> makeItem result + Nothing -> fail "File type must be .scss or .sass." + +-- | Use the file extension to determine whether to use indented syntax. +selectFileType :: SassOptions -> String -> Maybe SassOptions +selectFileType options ".scss" = Just $ options { sassIsIndentedSyntax = False } +selectFileType options ".sass" = Just $ options { sassIsIndentedSyntax = True } +selectFileType _ _ = Nothing