{-# LANGUAGE CPP #-} module Util.Settings (getSettings, defaultMeta) where import Text.Pandoc import Control.Exception (handle,IOException) import qualified Data.Map as M import Data.Monoid import Util.Meta (getMetaString) getSettings :: Meta -> IO Meta getSettings meta = do let handler :: IOException -> IO String handler _ = return [] yaml <- handle handler $ readFile (getMetaString "crossrefYaml" (meta <> defaultMeta)) #if MIN_VERSION_pandoc(1,14,0) let Pandoc dtve _ = either (error . show) id $ readMarkdown def ("---\n" ++ yaml ++ "\n---") #else let Pandoc dtve _ = readMarkdown def ("---\n" ++ yaml ++ "\n---") #endif return $ meta <> dtve <> defaultMeta defaultMeta :: Meta defaultMeta = Meta $ M.fromList [ ("figureTitle" , MetaInlines [Str "Figure"]) , ("tableTitle" , MetaInlines [Str "Table"]) , ("listingTitle" , MetaInlines [Str "Listing"]) , ("titleDelim" , MetaInlines [Str ":"]) , ("chapDelim" , MetaInlines [Str "."]) , ("rangeDelim" , MetaInlines [Str "-"]) , ("figPrefix" , MetaList [MetaInlines [Str "fig."], MetaInlines [Str "figs."]]) , ("eqnPrefix" , MetaList [MetaInlines [Str "eq."], MetaInlines [Str "eqns."]]) , ("tblPrefix" , MetaList [MetaInlines [Str "tbl."], MetaInlines [Str "tbls."]]) , ("lstPrefix" , MetaList [MetaInlines [Str "lst."], MetaInlines [Str "lsts."]]) , ("lofTitle" , MetaBlocks [Header 1 nullAttr [Str "List",Space,Str "of",Space,Str "Figures"]]) , ("lotTitle" , MetaBlocks [Header 1 nullAttr [Str "List",Space,Str "of",Space,Str "Tables"]]) , ("lolTitle" , MetaBlocks [Header 1 nullAttr [Str "List",Space,Str "of",Space,Str "Listings"]]) , ("figureTemplate" , MetaInlines [var "figureTitle",Space,var "i",var "titleDelim",Space,var "t"]) , ("tableTemplate" , MetaInlines [var "tableTitle",Space,var "i",var "titleDelim",Space,var "t"]) , ("listingTemplate", MetaInlines [var "listingTitle",Space,var "i",var "titleDelim",Space,var "t"]) , ("crossrefYaml" , MetaString "pandoc-crossref.yaml") ] where var = Math DisplayMath