summaryrefslogtreecommitdiff
path: root/src/Hakyll/Core/Compiler/Require.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Hakyll/Core/Compiler/Require.hs')
-rw-r--r--src/Hakyll/Core/Compiler/Require.hs121
1 files changed, 0 insertions, 121 deletions
diff --git a/src/Hakyll/Core/Compiler/Require.hs b/src/Hakyll/Core/Compiler/Require.hs
deleted file mode 100644
index c9373bf..0000000
--- a/src/Hakyll/Core/Compiler/Require.hs
+++ /dev/null
@@ -1,121 +0,0 @@
---------------------------------------------------------------------------------
-module Hakyll.Core.Compiler.Require
- ( Snapshot
- , save
- , saveSnapshot
- , load
- , loadSnapshot
- , loadBody
- , loadSnapshotBody
- , loadAll
- , loadAllSnapshots
- ) where
-
-
---------------------------------------------------------------------------------
-import Control.Monad (when)
-import Data.Binary (Binary)
-import qualified Data.Set as S
-import Data.Typeable
-
-
---------------------------------------------------------------------------------
-import Hakyll.Core.Compiler.Internal
-import Hakyll.Core.Dependencies
-import Hakyll.Core.Identifier
-import Hakyll.Core.Identifier.Pattern
-import Hakyll.Core.Item
-import Hakyll.Core.Metadata
-import Hakyll.Core.Store (Store)
-import qualified Hakyll.Core.Store as Store
-
-
---------------------------------------------------------------------------------
-save :: (Binary a, Typeable a) => Store -> Item a -> IO ()
-save store item = saveSnapshot store final item
-
-
---------------------------------------------------------------------------------
--- | Save a specific snapshot of an item, so you can load it later using
--- 'loadSnapshot'.
-saveSnapshot :: (Binary a, Typeable a)
- => Store -> Snapshot -> Item a -> IO ()
-saveSnapshot store snapshot item =
- Store.set store (key (itemIdentifier item) snapshot) (itemBody item)
-
-
---------------------------------------------------------------------------------
--- | Load an item compiled elsewhere. If the required item is not yet compiled,
--- the build system will take care of that automatically.
-load :: (Binary a, Typeable a) => Identifier -> Compiler (Item a)
-load id' = loadSnapshot id' final
-
-
---------------------------------------------------------------------------------
--- | Require a specific snapshot of an item.
-loadSnapshot :: (Binary a, Typeable a)
- => Identifier -> Snapshot -> Compiler (Item a)
-loadSnapshot id' snapshot = do
- store <- compilerStore <$> compilerAsk
- universe <- compilerUniverse <$> compilerAsk
-
- -- Quick check for better error messages
- when (id' `S.notMember` universe) $ fail notFound
-
- compilerTellDependencies [IdentifierDependency id']
- compilerResult $ CompilerRequire (id', snapshot) $ do
- result <- compilerUnsafeIO $ Store.get store (key id' snapshot)
- case result of
- Store.NotFound -> fail notFound
- Store.WrongType e r -> fail $ wrongType e r
- Store.Found x -> return $ Item id' x
- where
- notFound =
- "Hakyll.Core.Compiler.Require.load: " ++ show id' ++
- " (snapshot " ++ snapshot ++ ") was not found in the cache, " ++
- "the cache might be corrupted or " ++
- "the item you are referring to might not exist"
- wrongType e r =
- "Hakyll.Core.Compiler.Require.load: " ++ show id' ++
- " (snapshot " ++ snapshot ++ ") was found in the cache, " ++
- "but does not have the right type: expected " ++ show e ++
- " but got " ++ show r
-
-
---------------------------------------------------------------------------------
--- | A shortcut for only requiring the body of an item.
---
--- > loadBody = fmap itemBody . load
-loadBody :: (Binary a, Typeable a) => Identifier -> Compiler a
-loadBody id' = loadSnapshotBody id' final
-
-
---------------------------------------------------------------------------------
-loadSnapshotBody :: (Binary a, Typeable a)
- => Identifier -> Snapshot -> Compiler a
-loadSnapshotBody id' snapshot = fmap itemBody $ loadSnapshot id' snapshot
-
-
---------------------------------------------------------------------------------
--- | This function allows you to 'load' a dynamic list of items
-loadAll :: (Binary a, Typeable a) => Pattern -> Compiler [Item a]
-loadAll pattern = loadAllSnapshots pattern final
-
-
---------------------------------------------------------------------------------
-loadAllSnapshots :: (Binary a, Typeable a)
- => Pattern -> Snapshot -> Compiler [Item a]
-loadAllSnapshots pattern snapshot = do
- matching <- getMatches pattern
- mapM (\i -> loadSnapshot i snapshot) matching
-
-
---------------------------------------------------------------------------------
-key :: Identifier -> String -> [String]
-key identifier snapshot =
- ["Hakyll.Core.Compiler.Require", show identifier, snapshot]
-
-
---------------------------------------------------------------------------------
-final :: Snapshot
-final = "_final"