on 5dba607 help sign in
hakyll/src/Hakyll/Core/Writable.hs
42 lines 1.0 kB history raw
1-- | Describes writable items; items that can be saved to the disk
2--
3{-# LANGUAGE FlexibleInstances, TypeSynonymInstances #-}
4module Hakyll.Core.Writable
5 ( Writable (..)
6 ) where
8import Data.Word (Word8)
10import qualified Data.ByteString as SB
11import qualified Data.ByteString.Lazy as LB
12import Text.Blaze.Html (Html)
13import Text.Blaze.Html.Renderer.String (renderHtml)
15import Hakyll.Core.Identifier
17-- | Describes an item that can be saved to the disk
18--
19class Writable a where
20 -- | Save an item to the given filepath
21 write :: FilePath -> a -> IO ()
23instance Writable () where
24 write _ _ = return ()
26instance Writable [Char] where
27 write = writeFile
29instance Writable SB.ByteString where
30 write p = SB.writeFile p
32instance Writable LB.ByteString where
33 write p = LB.writeFile p
35instance Writable [Word8] where
36 write p = write p . SB.pack
38instance Writable Html where
39 write p html = write p $ renderHtml html
41instance Writable (Identifier a) where
42 write p = write p . show