summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper Van der Jeugt <jaspervdj@gmail.com>2011-02-15 22:15:02 +0100
committerJasper Van der Jeugt <jaspervdj@gmail.com>2011-02-15 22:15:02 +0100
commitd00026366c78ef8578f7a9503ced4915b1d4ec28 (patch)
tree633074bd3e9cf2d961be5b1429ee19d35e68b439
parent3346123ca661d578ccb458e7135f8b68867bf107 (diff)
downloadhakyll-d00026366c78ef8578f7a9503ced4915b1d4ec28.tar.gz
defaultPageRead → defaultPageCompiler
-rw-r--r--src/Hakyll/Web.hs10
-rw-r--r--src/Hakyll/Web/Page.hs15
-rw-r--r--src/Hakyll/Web/Page/Metadata.hs10
-rw-r--r--src/Hakyll/Web/Pandoc.hs2
-rw-r--r--src/Hakyll/Web/Template.hs6
5 files changed, 26 insertions, 17 deletions
diff --git a/src/Hakyll/Web.hs b/src/Hakyll/Web.hs
index 74c5c6c..bd9ce31 100644
--- a/src/Hakyll/Web.hs
+++ b/src/Hakyll/Web.hs
@@ -1,8 +1,7 @@
-- | Module exporting commonly used web-related functions
--
module Hakyll.Web
- ( defaultPageRead
- , defaultTemplateRead
+ ( defaultTemplateRead
, defaultTemplateReadWith
, defaultRelativizeUrls
, defaultCopyFile
@@ -11,7 +10,7 @@ module Hakyll.Web
import Prelude hiding (id)
import Control.Category (id)
-import Control.Arrow (arr, (>>>), (>>^), (&&&))
+import Control.Arrow ((>>^), (&&&))
import Text.Hamlet (HamletSettings)
@@ -20,15 +19,10 @@ import Hakyll.Core.Writable
import Hakyll.Core.Identifier
import Hakyll.Core.ResourceProvider
import Hakyll.Web.Page
-import Hakyll.Web.Pandoc
import Hakyll.Web.Template
import Hakyll.Web.RelativizeUrls
import Hakyll.Web.Util.String
-defaultPageRead :: Compiler Resource (Page String)
-defaultPageRead = cached "Hakyll.Web.defaultPageRead" $
- pageRead >>> addDefaultFields >>> arr applySelf >>> pageRenderPandoc
-
defaultRelativizeUrls :: Compiler (Page String) (Page String)
defaultRelativizeUrls = getRoute &&& id >>^ uncurry relativize
where
diff --git a/src/Hakyll/Web/Page.hs b/src/Hakyll/Web/Page.hs
index 03995cd..30578e9 100644
--- a/src/Hakyll/Web/Page.hs
+++ b/src/Hakyll/Web/Page.hs
@@ -51,14 +51,15 @@ module Hakyll.Web.Page
, fromBody
, fromMap
, toMap
- , pageRead
+ , readPageCompiler
+ , defaultPageCompiler
, addDefaultFields
, sortByBaseName
) where
import Prelude hiding (id)
import Control.Category (id)
-import Control.Arrow ((>>^), (&&&), (>>>))
+import Control.Arrow (arr, (>>^), (&&&), (>>>))
import System.FilePath (takeBaseName, takeDirectory)
import Data.Monoid (Monoid, mempty)
import Data.Map (Map)
@@ -72,6 +73,8 @@ import Hakyll.Core.ResourceProvider
import Hakyll.Web.Page.Internal
import Hakyll.Web.Page.Read
import Hakyll.Web.Page.Metadata
+import Hakyll.Web.Pandoc
+import Hakyll.Web.Template
import Hakyll.Web.Util.String
-- | Create a page from a body, without metadata
@@ -91,8 +94,12 @@ toMap (Page m b) = M.insert "body" b m
-- | Read a page (do not render it)
--
-pageRead :: Compiler Resource (Page String)
-pageRead = getResourceString >>^ readPage
+readPageCompiler :: Compiler Resource (Page String)
+readPageCompiler = getResourceString >>^ readPage
+
+defaultPageCompiler :: Compiler Resource (Page String)
+defaultPageCompiler = cached "Hakyll.Web.Page.defaultPageCompiler" $
+ readPageCompiler >>> addDefaultFields >>> arr applySelf >>> pageRenderPandoc
-- | Add a number of default metadata fields to a page. These fields include:
--
diff --git a/src/Hakyll/Web/Page/Metadata.hs b/src/Hakyll/Web/Page/Metadata.hs
index 2880ece..23d98a4 100644
--- a/src/Hakyll/Web/Page/Metadata.hs
+++ b/src/Hakyll/Web/Page/Metadata.hs
@@ -2,6 +2,7 @@
--
module Hakyll.Web.Page.Metadata
( getField
+ , getFieldMaybe
, setField
, setFieldA
, renderField
@@ -31,7 +32,14 @@ import Hakyll.Web.Util.String
getField :: String -- ^ Key
-> Page a -- ^ Page
-> String -- ^ Value
-getField key = fromMaybe "" . M.lookup key . pageMetadata
+getField key = fromMaybe "" . getFieldMaybe key
+
+-- | Get a field in a 'Maybe' wrapper
+--
+getFieldMaybe :: String -- ^ Key
+ -> Page a -- ^ Page
+ -> Maybe String -- ^ Value, if found
+getFieldMaybe key = M.lookup key . pageMetadata
-- | Add a metadata field. If the field already exists, it is not overwritten.
--
diff --git a/src/Hakyll/Web/Pandoc.hs b/src/Hakyll/Web/Pandoc.hs
index 308d06b..f225997 100644
--- a/src/Hakyll/Web/Pandoc.hs
+++ b/src/Hakyll/Web/Pandoc.hs
@@ -27,7 +27,7 @@ import Text.Pandoc
import Hakyll.Core.Compiler
import Hakyll.Web.FileType
-import Hakyll.Web.Page
+import Hakyll.Web.Page.Internal
-- | Read a string using pandoc, with the default options
--
diff --git a/src/Hakyll/Web/Template.hs b/src/Hakyll/Web/Template.hs
index 78ddbba..70b689a 100644
--- a/src/Hakyll/Web/Template.hs
+++ b/src/Hakyll/Web/Template.hs
@@ -51,7 +51,6 @@ module Hakyll.Web.Template
import Control.Arrow
import Data.Maybe (fromMaybe)
-import qualified Data.Map as M
import System.FilePath (takeExtension)
import Text.Hamlet (HamletSettings, defaultHamletSettings)
@@ -61,7 +60,8 @@ import Hakyll.Core.Identifier
import Hakyll.Core.ResourceProvider
import Hakyll.Web.Template.Internal
import Hakyll.Web.Template.Read
-import Hakyll.Web.Page
+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
@@ -73,7 +73,7 @@ applyTemplate template page =
where
substitute (Chunk chunk) = chunk
substitute (Key key) =
- fromMaybe ("$" ++ key ++ "$") $ M.lookup key $ toMap page
+ fromMaybe ("$" ++ key ++ "$") $ getFieldMaybe key page
substitute (Escaped) = "$"
-- | Apply a page as it's own template. This is often very useful to fill in