on master help sign in
defaultPageRead → defaultPageCompiler
commitd00026366c78ef8578f7a9503ced4915b1d4ec28 authorJasper Van der Jeugt <jaspervdj@gmail.com> dateTue 15 Feb 2011, 22:15 (16 years ago) parent3346123
5 files changed+26−17
src/Hakyll/Web.hs+2−8 src/Hakyll/Web/Page.hs+11−4 src/Hakyll/Web/Page/Metadata.hs+9−1 src/Hakyll/Web/Pandoc.hs+1−1 src/Hakyll/Web/Template.hs+3−3
src/Hakyll/Web.hs+2−8
@@ -1,8 +1,7 @@
11-- | Module exporting commonly used web-related functions
22--
33module Hakyll.Web
4− ( defaultPageRead
5− , defaultTemplateRead
4+ ( defaultTemplateRead
65 , defaultTemplateReadWith
76 , defaultRelativizeUrls
87 , defaultCopyFile
@@ -11,7 +10,7 @@ module Hakyll.Web
1110
1211import Prelude hiding (id)
1312import Control.Category (id)
14−import Control.Arrow (arr, (>>>), (>>^), (&&&))
13+import Control.Arrow ((>>^), (&&&))
1514
1615import Text.Hamlet (HamletSettings)
1716
@@ -20,15 +19,10 @@ import Hakyll.Core.Writable
2019import Hakyll.Core.Identifier
2120import Hakyll.Core.ResourceProvider
2221import Hakyll.Web.Page
23−import Hakyll.Web.Pandoc
2422import Hakyll.Web.Template
2523import Hakyll.Web.RelativizeUrls
2624import Hakyll.Web.Util.String
2725
28−defaultPageRead :: Compiler Resource (Page String)
29−defaultPageRead = cached "Hakyll.Web.defaultPageRead" $
30− pageRead >>> addDefaultFields >>> arr applySelf >>> pageRenderPandoc
31−
3226defaultRelativizeUrls :: Compiler (Page String) (Page String)
3327defaultRelativizeUrls = getRoute &&& id >>^ uncurry relativize
3428 where
src/Hakyll/Web/Page.hs+11−4
@@ -51,14 +51,15 @@ module Hakyll.Web.Page
5151 , fromBody
5252 , fromMap
5353 , toMap
54− , pageRead
54+ , readPageCompiler
55+ , defaultPageCompiler
5556 , addDefaultFields
5657 , sortByBaseName
5758 ) where
5859
5960import Prelude hiding (id)
6061import Control.Category (id)
61−import Control.Arrow ((>>^), (&&&), (>>>))
62+import Control.Arrow (arr, (>>^), (&&&), (>>>))
6263import System.FilePath (takeBaseName, takeDirectory)
6364import Data.Monoid (Monoid, mempty)
6465import Data.Map (Map)
@@ -72,6 +73,8 @@ import Hakyll.Core.ResourceProvider
7273import Hakyll.Web.Page.Internal
7374import Hakyll.Web.Page.Read
7475import Hakyll.Web.Page.Metadata
76+import Hakyll.Web.Pandoc
77+import Hakyll.Web.Template
7578import Hakyll.Web.Util.String
7679
7780-- | Create a page from a body, without metadata
@@ -91,8 +94,12 @@ toMap (Page m b) = M.insert "body" b m
9194
9295-- | Read a page (do not render it)
9396--
94−pageRead :: Compiler Resource (Page String)
95−pageRead = getResourceString >>^ readPage
97+readPageCompiler :: Compiler Resource (Page String)
98+readPageCompiler = getResourceString >>^ readPage
99+
100+defaultPageCompiler :: Compiler Resource (Page String)
101+defaultPageCompiler = cached "Hakyll.Web.Page.defaultPageCompiler" $
102+ readPageCompiler >>> addDefaultFields >>> arr applySelf >>> pageRenderPandoc
96103
97104-- | Add a number of default metadata fields to a page. These fields include:
98105--
src/Hakyll/Web/Page/Metadata.hs+9−1
@@ -2,6 +2,7 @@
22--
33module Hakyll.Web.Page.Metadata
44 ( getField
5+ , getFieldMaybe
56 , setField
67 , setFieldA
78 , renderField
@@ -31,7 +32,14 @@ import Hakyll.Web.Util.String
3132getField :: String -- ^ Key
3233 -> Page a -- ^ Page
3334 -> String -- ^ Value
34−getField key = fromMaybe "" . M.lookup key . pageMetadata
35+getField key = fromMaybe "" . getFieldMaybe key
36+
37+-- | Get a field in a 'Maybe' wrapper
38+--
39+getFieldMaybe :: String -- ^ Key
40+ -> Page a -- ^ Page
41+ -> Maybe String -- ^ Value, if found
42+getFieldMaybe key = M.lookup key . pageMetadata
3543
3644-- | Add a metadata field. If the field already exists, it is not overwritten.
3745--
src/Hakyll/Web/Pandoc.hs+1−1
@@ -27,7 +27,7 @@ import Text.Pandoc
2727
2828import Hakyll.Core.Compiler
2929import Hakyll.Web.FileType
30−import Hakyll.Web.Page
30+import Hakyll.Web.Page.Internal
3131
3232-- | Read a string using pandoc, with the default options
3333--
src/Hakyll/Web/Template.hs+3−3
@@ -51,7 +51,6 @@ module Hakyll.Web.Template
5151
5252import Control.Arrow
5353import Data.Maybe (fromMaybe)
54−import qualified Data.Map as M
5554import System.FilePath (takeExtension)
5655
5756import Text.Hamlet (HamletSettings, defaultHamletSettings)
@@ -61,7 +60,8 @@ import Hakyll.Core.Identifier
6160import Hakyll.Core.ResourceProvider
6261import Hakyll.Web.Template.Internal
6362import Hakyll.Web.Template.Read
64−import Hakyll.Web.Page
63+import Hakyll.Web.Page.Internal
64+import Hakyll.Web.Page.Metadata
6565
6666-- | Substitutes @$identifiers@ in the given @Template@ by values from the given
6767-- "Page". When a key is not found, it is left as it is. You can specify
@@ -73,7 +73,7 @@ applyTemplate template page =
7373 where
7474 substitute (Chunk chunk) = chunk
7575 substitute (Key key) =
76− fromMaybe ("$" ++ key ++ "$") $ M.lookup key $ toMap page
76+ fromMaybe ("$" ++ key ++ "$") $ getFieldMaybe key page
7777 substitute (Escaped) = "$"
7878
7979-- | Apply a page as it's own template. This is often very useful to fill in