summaryrefslogtreecommitdiff
path: root/src/Hakyll
diff options
context:
space:
mode:
Diffstat (limited to 'src/Hakyll')
-rw-r--r--src/Hakyll/Core/Compiler.hs9
-rw-r--r--src/Hakyll/Web/Page.hs12
-rw-r--r--src/Hakyll/Web/Page/Internal.hs12
-rw-r--r--src/Hakyll/Web/Template.hs6
4 files changed, 24 insertions, 15 deletions
diff --git a/src/Hakyll/Core/Compiler.hs b/src/Hakyll/Core/Compiler.hs
index a3fed7c..e5da9b8 100644
--- a/src/Hakyll/Core/Compiler.hs
+++ b/src/Hakyll/Core/Compiler.hs
@@ -101,6 +101,7 @@ module Hakyll.Core.Compiler
, requireAllA
, cached
, unsafeCompiler
+ , traceShowCompiler
, mapCompiler
, timedCompiler
, byExtension
@@ -277,6 +278,14 @@ unsafeCompiler :: (a -> IO b) -- ^ Function to lift
-> Compiler a b -- ^ Resulting compiler
unsafeCompiler f = fromJob $ CompilerM . liftIO . f
+-- | Compiler for debugging purposes
+--
+traceShowCompiler :: Show a => Compiler a a
+traceShowCompiler = fromJob $ \x -> CompilerM $ do
+ logger <- compilerLogger <$> ask
+ report logger $ show x
+ return x
+
-- | Map over a compiler
--
mapCompiler :: Compiler a b
diff --git a/src/Hakyll/Web/Page.hs b/src/Hakyll/Web/Page.hs
index c61008c..8a16ef8 100644
--- a/src/Hakyll/Web/Page.hs
+++ b/src/Hakyll/Web/Page.hs
@@ -61,8 +61,6 @@ import Prelude hiding (id)
import Control.Category (id)
import Control.Arrow (arr, (>>^), (&&&), (>>>))
import System.FilePath (takeBaseName, takeDirectory)
-import Data.Monoid (Monoid, mempty)
-import Data.Map (Map)
import qualified Data.Map as M
import Data.List (sortBy)
import Data.Ord (comparing)
@@ -82,16 +80,6 @@ import Hakyll.Web.Util.String
fromBody :: a -> Page a
fromBody = Page M.empty
--- | Create a metadata page, without a body
---
-fromMap :: Monoid a => Map String String -> Page a
-fromMap m = Page m mempty
-
--- | Convert a page to a map. The body will be placed in the @body@ key.
---
-toMap :: Page String -> Map String String
-toMap (Page m b) = M.insert "body" b m
-
-- | Read a page (do not render it)
--
readPageCompiler :: Compiler Resource (Page String)
diff --git a/src/Hakyll/Web/Page/Internal.hs b/src/Hakyll/Web/Page/Internal.hs
index dd47197..55067ed 100644
--- a/src/Hakyll/Web/Page/Internal.hs
+++ b/src/Hakyll/Web/Page/Internal.hs
@@ -3,6 +3,8 @@
{-# LANGUAGE DeriveDataTypeable #-}
module Hakyll.Web.Page.Internal
( Page (..)
+ , fromMap
+ , toMap
) where
import Control.Applicative ((<$>), (<*>))
@@ -36,3 +38,13 @@ instance Binary a => Binary (Page a) where
instance Writable a => Writable (Page a) where
write p (Page _ b) = write p b
+
+-- | Create a metadata page, without a body
+--
+fromMap :: Monoid a => Map String String -> Page a
+fromMap m = Page m mempty
+
+-- | Convert a page to a map. The body will be placed in the @body@ key.
+--
+toMap :: Page String -> Map String String
+toMap (Page m b) = M.insert "body" b m
diff --git a/src/Hakyll/Web/Template.hs b/src/Hakyll/Web/Template.hs
index 5b38ba3..9c49278 100644
--- a/src/Hakyll/Web/Template.hs
+++ b/src/Hakyll/Web/Template.hs
@@ -53,6 +53,7 @@ module Hakyll.Web.Template
import Control.Arrow
import Data.Maybe (fromMaybe)
import System.FilePath (takeExtension)
+import qualified Data.Map as M
import Text.Hamlet (HamletSettings, defaultHamletSettings)
@@ -62,7 +63,6 @@ import Hakyll.Core.ResourceProvider
import Hakyll.Web.Template.Internal
import Hakyll.Web.Template.Read
import Hakyll.Web.Page.Internal
-import Hakyll.Web.Page.Metadata
-- | Substitutes @$identifiers@ in the given @Template@ by values from the given
-- "Page". When a key is not found, it is left as it is. You can specify
@@ -72,9 +72,9 @@ applyTemplate :: Template -> Page String -> Page String
applyTemplate template page =
fmap (const $ substitute =<< unTemplate template) page
where
+ map' = toMap page
substitute (Chunk chunk) = chunk
- substitute (Key key) =
- fromMaybe ("$" ++ key ++ "$") $ getFieldMaybe key page
+ substitute (Key key) = fromMaybe ("$" ++ key ++ "$") $ M.lookup key map'
substitute (Escaped) = "$"
-- | Apply a page as it's own template. This is often very useful to fill in