From e49cd3b4b071c2e0cb3e553fe8272e7cd2843349 Mon Sep 17 00:00:00 2001 From: Jasper Van der Jeugt Date: Thu, 30 Dec 2010 21:18:55 +0100 Subject: Cleanup, split up page module --- src/Hakyll/Web/Page/Internal.hs | 31 +++++++++++++++++++++++++++++++ src/Hakyll/Web/Page/Read.hs | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/Hakyll/Web/Page/Internal.hs (limited to 'src/Hakyll/Web/Page') diff --git a/src/Hakyll/Web/Page/Internal.hs b/src/Hakyll/Web/Page/Internal.hs new file mode 100644 index 0000000..bac4c51 --- /dev/null +++ b/src/Hakyll/Web/Page/Internal.hs @@ -0,0 +1,31 @@ +-- | Internal representation of the page datatype +-- +{-# LANGUAGE DeriveDataTypeable #-} +module Hakyll.Web.Page.Internal + ( Page (..) + ) where + +import Control.Applicative ((<$>), (<*>)) + +import Data.Map (Map) +import Data.Binary (Binary, get, put) +import Data.Typeable (Typeable) + +import Hakyll.Core.Writable + +-- | Type used to represent pages +-- +data Page a = Page + { pageMetadata :: Map String String + , pageBody :: a + } deriving (Show, Typeable) + +instance Functor Page where + fmap f (Page m b) = Page m (f b) + +instance Binary a => Binary (Page a) where + put (Page m b) = put m >> put b + get = Page <$> get <*> get + +instance Writable a => Writable (Page a) where + write p (Page _ b) = write p b diff --git a/src/Hakyll/Web/Page/Read.hs b/src/Hakyll/Web/Page/Read.hs index 82224a4..d72f32a 100644 --- a/src/Hakyll/Web/Page/Read.hs +++ b/src/Hakyll/Web/Page/Read.hs @@ -11,7 +11,7 @@ import Data.List (isPrefixOf) import Data.Map (Map) import qualified Data.Map as M -import Hakyll.Web.Page +import Hakyll.Web.Page.Internal import Hakyll.Web.Util.String -- | We're using a simple state monad as parser -- cgit v1.2.3