diff options
Diffstat (limited to 'src/Hakyll')
-rw-r--r-- | src/Hakyll/Core/Compiler.hs | 9 | ||||
-rw-r--r-- | src/Hakyll/Web/Page.hs | 12 | ||||
-rw-r--r-- | src/Hakyll/Web/Page/Internal.hs | 12 | ||||
-rw-r--r-- | src/Hakyll/Web/Template.hs | 6 |
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 |