packages feed

daino-0.1.5.2: src/ShakeBake/Bake.hs

---------------------------------------------------------------------
--
-- Module      :
----------------------------------------------------------------------
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wall -fno-warn-orphans 
            -fno-warn-missing-signatures
            -fno-warn-missing-methods 
            -fno-warn-unused-matches #-}

{- |  process to convert
              files from md to all the formats required
              orginals are found in dire doughDir and go to bakeDir
-}
module ShakeBake.Bake where

import Foundational.SettingsPage  
import Foundational.CmdLineFlags

import Foundational.Filetypes4sites

import Wave.Docrep2panrep 
import Wave.Md2doc  
import Wave.Panrep2pdf


-- import Uniform2.Markdown  
-- import Uniform.Pandoc
-- import Uniform2.ProcessPDF  
import Uniform.Http

import Wave.Panrep2html  
import UniformBase
-- import Foundational.SettingsPage (SiteLayout(texTemplateFile))

type BakeOp =
    NoticeLevel ->
    PubFlags ->
    -- | md file
    Path Abs File ->
    Settings->
    Path Abs File ->
    ErrIO [FilePath] -- additional needs found 

bakeOneMD2docrep :: BakeOp --    MD -> DOCREP
-- process the md to pandoc format (parser)
-- and add the refs 
bakeOneMD2docrep debug flags inputFn sett3 resfn2 = do
    when (inform debug) $    putIOwords
        [ "\n-----------------"
        , "bakeOneMD2docrep 1 fn", showT inputFn
        , "\n resfn2", showT resfn2
        ]
    -- let layout = siteLayout sett3
    -- let doughP = doughDir layout
    -- let hpname = blogAuthorToSuppress . siteLayout $ sett3
    dr3 <- readMarkdownFile2docrep debug sett3  inputFn 
    dr4 <- addRefs debug dr3

    write8 resfn2 docrepFileType dr4

    when (inform debug) $
        putIOwords
            [ "\n-----------------"
            , "bakeOneMD2docrep done resfn2"
            , showT resfn2
            ]
    return []

bakeOneDocrep2panrep :: BakeOp --  DOCREP -> PANREP
--   add index  
bakeOneDocrep2panrep debug flags inputFn sett3 resfn2 = do
    when (inform debug) $    putIOwords
        [ "-----------------"
        , "bakeOneDocrep2panrep 1 inputFn"
        , showT inputFn
        , showT resfn2
        ]
    dr1 <- read8 inputFn docrepFileType

    -- let layout = siteLayout sett3
    (p3, needsFound) <- docrep2panrep debug flags sett3 dr1
            -- completes index and should process reps 
            -- what to do with needs?
    -- needP needsFound 

    write8 resfn2 panrepFileType p3 -- content is html style
    when (inform debug) $
        putIOwords
            ["\n-----------------", "bakeOneDocrep2panrep done produced resf2n", showT resfn2]
    return needsFound


bakeOnePanrep2html :: BakeOp -- PANREP -> HTML  -- TODO
bakeOnePanrep2html debug flags inputFn sett3 resfn2 = do
    when (inform debug) $    putIOwords
        [ "\n-----------------"
        , "bakeOnePanrep2html 1 fn"
        , showT inputFn
        , "\n resfn2"
        , showT resfn2
        ]
    dr1 <- read8 inputFn panrepFileType
    -- let layout = siteLayout sett3
    -- this gives the siteLayout section of settingsN.yml file
    -- let staticMenu = sett3
    -- let mf = masterTemplateFile layout
    -- let masterfn = templatesDir layout </> mf

    p <- panrep2html debug  sett3 dr1

    write8 resfn2 htmloutFileType p -- content is html style
    when (inform debug) $
        putIOwords
            ["\n-----------------", "bakeOnePanrep2html done fn", showT resfn2]
    return []


bakeOnePanrep2texsnip :: BakeOp --  PANREP -> TEXSNIP
-- TODO
bakeOnePanrep2texsnip debug flags inputFn sett3 resfn2 = do
                -- debug flags inputFn layout resfn2 
    when (inform debug) $    putIOwords
        [ "\n-----------------"
        , "bakeOnePanrep2texsnip 1 fn"
        , showT inputFn
        , "debug"
        , showT debug
        , "\n resfn2"
        , showT resfn2
        ]

    dr1 <- read8 inputFn panrepFileType
    snip1 <- panrep2texsnip debug dr1
    write8 resfn2 texSnipFileType snip1 -- content is html style
    when (inform debug) $
        putIOwords
            ["\n-----------------", "bakeOneFile2html done fn", showT resfn2]
    return []

bakeOneTexsnip2tex :: BakeOp -- TEXSNIP -> TEX
bakeOneTexsnip2tex debug flags inputFn sett3 resfn2 = do
    when (inform debug) $   putIOwords
        [ "\n-----------------"
        , "bakeOneFile2tex 1 fn"
        , showT inputFn
        , "\n resfn2"
        , showT resfn2
        ]


    snip1 <- read8 inputFn texSnipFileType

    let layout = siteLayout sett3
    let doughP = doughDir layout
        bakedP = bakedDir layout 


    tex1 <- texsnip2tex NoticeLevel0 doughP bakedP snip1 
        ((templatesDir layout) </> (texTemplateFile layout))
    -- let tex1 = tex2latex2 zero [snip1]
    write8 resfn2 texFileType tex1 -- content is html style
    when (inform debug) $
        putIOwords
            ["\n-----------------", "bakeOneFile2tex done fn", showT resfn2]
    return []

bakeOneTex2pdf :: BakeOp
bakeOneTex2pdf debug flags inputFn sett3 resfn2 = do
    when (inform debug) $    putIOwords
        [ "\n-----------------"
        , "bakeOneTex2pdf 1 fn:"
        , showT inputFn
        , "\n\t debug:"
        , showT debug
        , "\n\t resfn2:"
        , showT resfn2
        ]

    -- let refDir =
            -- makeAbsDir . getParentDir . toFilePath $ inputFn :: Path Abs Dir
    -- dr1 <- read8 inputFn docrepFileType
    let layout = siteLayout sett3
    let doughP = doughDir layout

    tex2pdf debug  inputFn resfn2 doughP -- content is html style
    when (inform debug) $
        putIOwords
            ["\n-----------------", "bakeOneTex2pdf done fn", showT resfn2]
    return []