packages feed

pandoc-crossref-0.1.0.1: src/Util/Settings.hs

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))
  let Pandoc dtve _ = readMarkdown def ("---\n" ++ yaml ++ "\n---")
  return $ meta <> dtve <> defaultMeta

defaultMeta :: Meta
defaultMeta = Meta $ M.fromList
  [ ("figureTitle"    , MetaInlines [Str "Figure"])
  , ("tableTitle"     , MetaInlines [Str "Table"])
  , ("titleDelim"     , MetaInlines [Str ":"])
  , ("chapDelim"      , MetaInlines [Str "."])
  , ("rangeDelim"     , MetaInlines [Str "-"])
  , ("figPrefix"      , MetaInlines [Str "fig."])
  , ("eqnPrefix"      , MetaInlines [Str "eq."])
  , ("tblPrefix"      , MetaInlines [Str "tbl."])
  , ("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"]])
  , ("figureTemplate" , MetaInlines [var "figureTitle",Space,var "i",var "titleDelim",Space,var "t"])
  , ("tableTemplate"  , MetaInlines [var "tableTitle",Space,var "i",var "titleDelim",Space,var "t"])
  , ("crossrefYaml"   , MetaString "pandoc-crossref.yaml")
  ]
  where var = Math DisplayMath