packages feed

pandoc-crossref-0.1.0.0: src/Util/Options.hs

module Util.Options where

import Text.Pandoc.Definition
import References.Types
import Util.Meta
import Util.Template

data Options = Options { useCleveref :: Bool
                       , sepChapters :: Bool
                       , figPrefix   :: [Inline]
                       , eqnPrefix   :: [Inline]
                       , tblPrefix   :: [Inline]
                       , chapDelim   :: [Inline]
                       , rangeDelim  :: [Inline]
                       , lofTitle    :: [Block]
                       , lotTitle    :: [Block]
                       , outFormat   :: Maybe Format
                       , figureTemplate :: WS [Inline]
                       , tableTemplate  :: WS [Inline]
                       }

getOptions :: Meta -> Meta -> Maybe Format -> Options
getOptions meta dtv fmt =
  Options {
      useCleveref = getMetaBool "cref" meta dtv
    , sepChapters = getMetaBool "chapters" meta dtv
    , figPrefix   = getMetaInlines "figPrefix" meta dtv
    , eqnPrefix   = getMetaInlines "eqnPrefix" meta dtv
    , tblPrefix   = getMetaInlines "tblPrefix" meta dtv
    , chapDelim   = getMetaInlines "chapDelim" meta dtv
    , rangeDelim  = getMetaInlines "rangeDelim" meta dtv
    , lofTitle    = getMetaBlock "lofTitle" meta dtv
    , lotTitle    = getMetaBlock "lotTitle" meta dtv
    , outFormat   = fmt
    , figureTemplate = replaceTemplate $ getMetaInlines "figureTemplate" meta dtv
    , tableTemplate  = replaceTemplate $ getMetaInlines "tableTemplate" meta dtv
  }