diff options
Diffstat (limited to 'src/Text/Pandoc/Citeproc/Data.hs')
-rw-r--r-- | src/Text/Pandoc/Citeproc/Data.hs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Citeproc/Data.hs b/src/Text/Pandoc/Citeproc/Data.hs new file mode 100644 index 000000000..dfdaf2598 --- /dev/null +++ b/src/Text/Pandoc/Citeproc/Data.hs @@ -0,0 +1,31 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE TemplateHaskell #-} +module Text.Pandoc.Citeproc.Data + (biblatexStringMap) +where +import Data.FileEmbed +import Data.ByteString (ByteString) +import qualified Data.Map as M +import qualified Data.Text.Encoding as TE +import qualified Data.Text as T +import Data.Text (Text) +import Text.Pandoc.Citeproc.Util (toIETF) +import Citeproc (Lang(..), parseLang) + +biblatexLocalizations :: [(FilePath, ByteString)] +biblatexLocalizations = $(embedDir "citeproc/biblatex-localization") + +-- biblatex localization keys, from files at +-- http://github.com/plk/biblatex/tree/master/tex/latex/biblatex/lbx +biblatexStringMap :: M.Map Text (M.Map Text (Text, Text)) +biblatexStringMap = foldr go mempty biblatexLocalizations + where + go (fp, bs) = + let Lang lang _ = parseLang (toIETF $ T.takeWhile (/= '.') $ T.pack fp) + ls = T.lines $ TE.decodeUtf8 bs + in if length ls > 4 + then M.insert lang (toStringMap $ map (T.splitOn "|") ls) + else id + toStringMap = foldr go' mempty + go' [term, x, y] = M.insert term (x, y) + go' _ = id |