scrapbook-core-0.5.0: src/ScrapBook/Write.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
module ScrapBook.Write
( write
, fileName
, updateFileName
, Write (..)
) where
import RIO
import Data.Extensible
import ScrapBook.Collecter (Collecter)
import ScrapBook.Data.Config (HasWriteConfigFields)
import ScrapBook.Data.Format (Format)
import ScrapBook.Data.Site (IsSiteFields, Post)
import ScrapBook.Feed ()
import ScrapBook.Json ()
import ScrapBook.Write.Internal (Write (..))
write :: (IsSiteFields xs, HasWriteConfigFields ys) =>
Record ys -> Format -> [Post (Record xs)] -> Collecter Text
write conf fmt posts = flip matchField fmt $
htabulateFor (Proxy :: Proxy Write) $
\m -> Field (Match . pure $ writeTo m conf posts)
fileName :: HasWriteConfigFields xs => Record xs -> Format -> FilePath
fileName conf = matchField $
htabulateFor (Proxy :: Proxy Write) $
\m -> Field (Match . pure $ fileName' m conf)
updateFileName :: HasWriteConfigFields xs =>
Format -> FilePath -> Record xs -> Record xs
updateFileName = matchField $
htabulateFor (Proxy :: Proxy Write) $ Field . Match . pure . updateFileName'