on 877cb21 help sign in
hakyll/src/Hakyll/Core/Writable.hs
56 lines 1.9 kB history raw
1--------------------------------------------------------------------------------
2-- | Describes writable items; items that can be saved to the disk
3{-# LANGUAGE FlexibleInstances #-}
4{-# LANGUAGE TypeSynonymInstances #-}
5module Hakyll.Core.Writable
6 ( Writable (..)
7 ) where
10--------------------------------------------------------------------------------
11import qualified Data.ByteString as SB
12import qualified Data.ByteString.Lazy as LB
13import Data.Word (Word8)
14import Text.Blaze.Html (Html)
15import Text.Blaze.Html.Renderer.String (renderHtml)
18--------------------------------------------------------------------------------
19import Hakyll.Core.Item
22--------------------------------------------------------------------------------
23-- | Describes an item that can be saved to the disk
24class Writable a where
25 -- | Save an item to the given filepath
26 write :: FilePath -> Item a -> IO ()
29--------------------------------------------------------------------------------
30instance Writable () where
31 write _ _ = return ()
34--------------------------------------------------------------------------------
35instance Writable [Char] where
36 write p = writeFile p . itemBody
39--------------------------------------------------------------------------------
40instance Writable SB.ByteString where
41 write p = SB.writeFile p . itemBody
44--------------------------------------------------------------------------------
45instance Writable LB.ByteString where
46 write p = LB.writeFile p . itemBody
49--------------------------------------------------------------------------------
50instance Writable [Word8] where
51 write p = write p . fmap SB.pack
54--------------------------------------------------------------------------------
55instance Writable Html where
56 write p = write p . fmap renderHtml