{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeSynonymInstances #-}
module Hakyll.Core.Writable
( Writable (..)
) where
import qualified Data.ByteString as SB
import qualified Data.ByteString.Lazy as LB
import Data.Word (Word8)
import Text.Blaze.Html (Html)
import Text.Blaze.Html.Renderer.String (renderHtml)
import Hakyll.Core.Item
class Writable a where
write :: FilePath -> Item a -> IO ()
instance Writable () where
write :: FilePath -> Item () -> IO ()
write FilePath
_ Item ()
_ = forall (m :: * -> *) a. Monad m => a -> m a
return ()
instance Writable [Char] where
write :: FilePath -> Item FilePath -> IO ()
write FilePath
p = FilePath -> FilePath -> IO ()
writeFile FilePath
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Item a -> a
itemBody
instance Writable SB.ByteString where
write :: FilePath -> Item ByteString -> IO ()
write FilePath
p = FilePath -> ByteString -> IO ()
SB.writeFile FilePath
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Item a -> a
itemBody
instance Writable LB.ByteString where
write :: FilePath -> Item ByteString -> IO ()
write FilePath
p = FilePath -> ByteString -> IO ()
LB.writeFile FilePath
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Item a -> a
itemBody
instance Writable [Word8] where
write :: FilePath -> Item [Word8] -> IO ()
write FilePath
p = forall a. Writable a => FilePath -> Item a -> IO ()
write FilePath
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Word8] -> ByteString
SB.pack
instance Writable Html where
write :: FilePath -> Item Html -> IO ()
write FilePath
p = forall a. Writable a => FilePath -> Item a -> IO ()
write FilePath
p forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Html -> FilePath
renderHtml