summaryrefslogtreecommitdiff
path: root/src/Hakyll/Core
diff options
context:
space:
mode:
authorJasper Van der Jeugt <jaspervdj@gmail.com>2011-02-19 17:04:50 +0100
committerJasper Van der Jeugt <jaspervdj@gmail.com>2011-02-19 17:04:50 +0100
commitf04efbad3ed6f5cbc215f8aa72b1bd0203712768 (patch)
treec32ff0981e158739ea1bca085f1e0f3d8a73c4e6 /src/Hakyll/Core
parentb89aad6178b151a859469a3ae5c6ed4e6f57cad6 (diff)
downloadhakyll-f04efbad3ed6f5cbc215f8aa72b1bd0203712768.tar.gz
Preview/INotify now works
Diffstat (limited to 'src/Hakyll/Core')
-rw-r--r--src/Hakyll/Core/Configuration.hs25
-rw-r--r--src/Hakyll/Core/ResourceProvider/FileResourceProvider.hs8
-rw-r--r--src/Hakyll/Core/Run.hs2
3 files changed, 30 insertions, 5 deletions
diff --git a/src/Hakyll/Core/Configuration.hs b/src/Hakyll/Core/Configuration.hs
index 3a7456f..242b68f 100644
--- a/src/Hakyll/Core/Configuration.hs
+++ b/src/Hakyll/Core/Configuration.hs
@@ -5,12 +5,26 @@ module Hakyll.Core.Configuration
, defaultHakyllConfiguration
) where
+import System.FilePath (takeFileName)
+import Data.List (isPrefixOf, isSuffixOf)
+
data HakyllConfiguration = HakyllConfiguration
{ -- | Directory in which the output written
destinationDirectory :: FilePath
, -- | Directory where hakyll's internal store is kept
storeDirectory :: FilePath
- } deriving (Show)
+ , -- | Function to determine ignored files
+ --
+ -- In 'defaultHakyllConfiguration', the following files are ignored:
+ --
+ -- * files starting with a @.@
+ --
+ -- * files ending with a @~@
+ --
+ -- * files ending with @.swp@
+ --
+ ignoreFile :: FilePath -> Bool
+ }
-- | Default configuration for a hakyll application
--
@@ -18,4 +32,13 @@ defaultHakyllConfiguration :: HakyllConfiguration
defaultHakyllConfiguration = HakyllConfiguration
{ destinationDirectory = "_site"
, storeDirectory = "_cache"
+ , ignoreFile = ignoreFile'
}
+ where
+ ignoreFile' path
+ | "." `isPrefixOf` fileName = True
+ | "~" `isSuffixOf` fileName = True
+ | ".swp" `isSuffixOf` fileName = True
+ | otherwise = False
+ where
+ fileName = takeFileName path
diff --git a/src/Hakyll/Core/ResourceProvider/FileResourceProvider.hs b/src/Hakyll/Core/ResourceProvider/FileResourceProvider.hs
index 2f040b3..0d89b21 100644
--- a/src/Hakyll/Core/ResourceProvider/FileResourceProvider.hs
+++ b/src/Hakyll/Core/ResourceProvider/FileResourceProvider.hs
@@ -11,13 +11,15 @@ import qualified Data.ByteString.Lazy as LB
import Hakyll.Core.ResourceProvider
import Hakyll.Core.Identifier
import Hakyll.Core.Util.File
+import Hakyll.Core.Configuration
-- | Create a filesystem-based 'ResourceProvider'
--
-fileResourceProvider :: IO ResourceProvider
-fileResourceProvider = do
+fileResourceProvider :: HakyllConfiguration -> IO ResourceProvider
+fileResourceProvider configuration = do
-- Retrieve a list of identifiers
- list <- map parseIdentifier <$> getRecursiveContents False "."
+ list <- map parseIdentifier . filter (not . ignoreFile configuration) <$>
+ getRecursiveContents False "."
-- Construct a resource provider
return ResourceProvider
diff --git a/src/Hakyll/Core/Run.hs b/src/Hakyll/Core/Run.hs
index b59fdac..b4c69f1 100644
--- a/src/Hakyll/Core/Run.hs
+++ b/src/Hakyll/Core/Run.hs
@@ -37,7 +37,7 @@ import Hakyll.Core.Configuration
run :: HakyllConfiguration -> Rules -> IO RuleSet
run configuration rules = do
store <- makeStore $ storeDirectory configuration
- provider <- fileResourceProvider
+ provider <- fileResourceProvider configuration
let ruleSet = runRules rules provider
compilers = rulesCompilers ruleSet