module Text.Pandoc.CrossRef.Util.Settings (getSettings, defaultMeta) where
import Text.Pandoc
import Text.Pandoc.Builder
import Control.Exception (handle,IOException)
import Text.Pandoc.CrossRef.Util.Settings.Gen
import Text.Pandoc.CrossRef.Util.Meta
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 =
figureTitle (str "Figure")
<> tableTitle (str "Table")
<> listingTitle (str "Listing")
<> titleDelim (str ":")
<> chapDelim (str ".")
<> rangeDelim (str "-")
<> figPrefix ([str "fig.", str "figs."])
<> eqnPrefix ([str "eq." , str "eqns."])
<> tblPrefix ([str "tbl.", str "tbls."])
<> lstPrefix ([str "lst.", str "lsts."])
<> secPrefix ([str "sec.", str "secs."])
<> lofTitle (header 1 $ text "List of Figures")
<> lotTitle (header 1 $ text "List of Tables")
<> lolTitle (header 1 $ text "List of Listings")
<> figureTemplate (var "figureTitle" <> space <> var "i" <> var "titleDelim" <> space <> var "t")
<> tableTemplate (var "tableTitle" <> space <> var "i" <> var "titleDelim" <> space <> var "t")
<> listingTemplate (var "listingTitle" <> space <> var "i" <> var "titleDelim" <> space <> var "t")
<> crossrefYaml (MetaString "pandoc-crossref.yaml")
<> chaptersDepth (MetaString "1")
where var = displayMath