Moved babelLangToBCP, polyglossiaLangToBCP to new module...
Text.Pandoc.Readers.LaTeX.Lang (unexported).
This commit is contained in:
parent
9abdbb2783
commit
799cd5db7a
3 changed files with 176 additions and 134 deletions
|
@ -510,6 +510,7 @@ library
|
|||
Text.Pandoc.Readers.Docx.StyleMap,
|
||||
Text.Pandoc.Readers.Docx.Fields,
|
||||
Text.Pandoc.Readers.LaTeX.Parsing,
|
||||
Text.Pandoc.Readers.LaTeX.Lang,
|
||||
Text.Pandoc.Readers.Odt.Base,
|
||||
Text.Pandoc.Readers.Odt.Namespaces,
|
||||
Text.Pandoc.Readers.Odt.StyleReader,
|
||||
|
|
|
@ -72,6 +72,8 @@ import Text.Pandoc.Parsing hiding (blankline, many, mathDisplay, mathInline,
|
|||
import Text.Pandoc.Readers.LaTeX.Types (ExpansionPoint (..), Macro (..),
|
||||
ArgSpec (..), Tok (..), TokType (..))
|
||||
import Text.Pandoc.Readers.LaTeX.Parsing
|
||||
import Text.Pandoc.Readers.LaTeX.Lang (polyglossiaLangToBCP47,
|
||||
babelLangToBCP47)
|
||||
import Text.Pandoc.Shared
|
||||
import qualified Text.Pandoc.Translations as Translations
|
||||
import Text.Pandoc.Walk
|
||||
|
@ -2265,137 +2267,3 @@ setDefaultLanguage = do
|
|||
setTranslations l
|
||||
updateState $ setMeta "lang" $ str (renderLang l)
|
||||
return mempty
|
||||
|
||||
polyglossiaLangToBCP47 :: M.Map String (String -> Lang)
|
||||
polyglossiaLangToBCP47 = M.fromList
|
||||
[ ("arabic", \o -> case filter (/=' ') o of
|
||||
"locale=algeria" -> Lang "ar" "" "DZ" []
|
||||
"locale=mashriq" -> Lang "ar" "" "SY" []
|
||||
"locale=libya" -> Lang "ar" "" "LY" []
|
||||
"locale=morocco" -> Lang "ar" "" "MA" []
|
||||
"locale=mauritania" -> Lang "ar" "" "MR" []
|
||||
"locale=tunisia" -> Lang "ar" "" "TN" []
|
||||
_ -> Lang "ar" "" "" [])
|
||||
, ("german", \o -> case filter (/=' ') o of
|
||||
"spelling=old" -> Lang "de" "" "DE" ["1901"]
|
||||
"variant=austrian,spelling=old"
|
||||
-> Lang "de" "" "AT" ["1901"]
|
||||
"variant=austrian" -> Lang "de" "" "AT" []
|
||||
"variant=swiss,spelling=old"
|
||||
-> Lang "de" "" "CH" ["1901"]
|
||||
"variant=swiss" -> Lang "de" "" "CH" []
|
||||
_ -> Lang "de" "" "" [])
|
||||
, ("lsorbian", \_ -> Lang "dsb" "" "" [])
|
||||
, ("greek", \o -> case filter (/=' ') o of
|
||||
"variant=poly" -> Lang "el" "" "polyton" []
|
||||
"variant=ancient" -> Lang "grc" "" "" []
|
||||
_ -> Lang "el" "" "" [])
|
||||
, ("english", \o -> case filter (/=' ') o of
|
||||
"variant=australian" -> Lang "en" "" "AU" []
|
||||
"variant=canadian" -> Lang "en" "" "CA" []
|
||||
"variant=british" -> Lang "en" "" "GB" []
|
||||
"variant=newzealand" -> Lang "en" "" "NZ" []
|
||||
"variant=american" -> Lang "en" "" "US" []
|
||||
_ -> Lang "en" "" "" [])
|
||||
, ("usorbian", \_ -> Lang "hsb" "" "" [])
|
||||
, ("latin", \o -> case filter (/=' ') o of
|
||||
"variant=classic" -> Lang "la" "" "" ["x-classic"]
|
||||
_ -> Lang "la" "" "" [])
|
||||
, ("slovenian", \_ -> Lang "sl" "" "" [])
|
||||
, ("serbianc", \_ -> Lang "sr" "cyrl" "" [])
|
||||
, ("pinyin", \_ -> Lang "zh" "Latn" "" ["pinyin"])
|
||||
, ("afrikaans", \_ -> Lang "af" "" "" [])
|
||||
, ("amharic", \_ -> Lang "am" "" "" [])
|
||||
, ("assamese", \_ -> Lang "as" "" "" [])
|
||||
, ("asturian", \_ -> Lang "ast" "" "" [])
|
||||
, ("bulgarian", \_ -> Lang "bg" "" "" [])
|
||||
, ("bengali", \_ -> Lang "bn" "" "" [])
|
||||
, ("tibetan", \_ -> Lang "bo" "" "" [])
|
||||
, ("breton", \_ -> Lang "br" "" "" [])
|
||||
, ("catalan", \_ -> Lang "ca" "" "" [])
|
||||
, ("welsh", \_ -> Lang "cy" "" "" [])
|
||||
, ("czech", \_ -> Lang "cs" "" "" [])
|
||||
, ("coptic", \_ -> Lang "cop" "" "" [])
|
||||
, ("danish", \_ -> Lang "da" "" "" [])
|
||||
, ("divehi", \_ -> Lang "dv" "" "" [])
|
||||
, ("esperanto", \_ -> Lang "eo" "" "" [])
|
||||
, ("spanish", \_ -> Lang "es" "" "" [])
|
||||
, ("estonian", \_ -> Lang "et" "" "" [])
|
||||
, ("basque", \_ -> Lang "eu" "" "" [])
|
||||
, ("farsi", \_ -> Lang "fa" "" "" [])
|
||||
, ("finnish", \_ -> Lang "fi" "" "" [])
|
||||
, ("french", \_ -> Lang "fr" "" "" [])
|
||||
, ("friulan", \_ -> Lang "fur" "" "" [])
|
||||
, ("irish", \_ -> Lang "ga" "" "" [])
|
||||
, ("scottish", \_ -> Lang "gd" "" "" [])
|
||||
, ("ethiopic", \_ -> Lang "gez" "" "" [])
|
||||
, ("galician", \_ -> Lang "gl" "" "" [])
|
||||
, ("hebrew", \_ -> Lang "he" "" "" [])
|
||||
, ("hindi", \_ -> Lang "hi" "" "" [])
|
||||
, ("croatian", \_ -> Lang "hr" "" "" [])
|
||||
, ("magyar", \_ -> Lang "hu" "" "" [])
|
||||
, ("armenian", \_ -> Lang "hy" "" "" [])
|
||||
, ("interlingua", \_ -> Lang "ia" "" "" [])
|
||||
, ("indonesian", \_ -> Lang "id" "" "" [])
|
||||
, ("icelandic", \_ -> Lang "is" "" "" [])
|
||||
, ("italian", \_ -> Lang "it" "" "" [])
|
||||
, ("japanese", \_ -> Lang "jp" "" "" [])
|
||||
, ("khmer", \_ -> Lang "km" "" "" [])
|
||||
, ("kurmanji", \_ -> Lang "kmr" "" "" [])
|
||||
, ("kannada", \_ -> Lang "kn" "" "" [])
|
||||
, ("korean", \_ -> Lang "ko" "" "" [])
|
||||
, ("lao", \_ -> Lang "lo" "" "" [])
|
||||
, ("lithuanian", \_ -> Lang "lt" "" "" [])
|
||||
, ("latvian", \_ -> Lang "lv" "" "" [])
|
||||
, ("malayalam", \_ -> Lang "ml" "" "" [])
|
||||
, ("mongolian", \_ -> Lang "mn" "" "" [])
|
||||
, ("marathi", \_ -> Lang "mr" "" "" [])
|
||||
, ("dutch", \_ -> Lang "nl" "" "" [])
|
||||
, ("nynorsk", \_ -> Lang "nn" "" "" [])
|
||||
, ("norsk", \_ -> Lang "no" "" "" [])
|
||||
, ("nko", \_ -> Lang "nqo" "" "" [])
|
||||
, ("occitan", \_ -> Lang "oc" "" "" [])
|
||||
, ("panjabi", \_ -> Lang "pa" "" "" [])
|
||||
, ("polish", \_ -> Lang "pl" "" "" [])
|
||||
, ("piedmontese", \_ -> Lang "pms" "" "" [])
|
||||
, ("portuguese", \_ -> Lang "pt" "" "" [])
|
||||
, ("romansh", \_ -> Lang "rm" "" "" [])
|
||||
, ("romanian", \_ -> Lang "ro" "" "" [])
|
||||
, ("russian", \_ -> Lang "ru" "" "" [])
|
||||
, ("sanskrit", \_ -> Lang "sa" "" "" [])
|
||||
, ("samin", \_ -> Lang "se" "" "" [])
|
||||
, ("slovak", \_ -> Lang "sk" "" "" [])
|
||||
, ("albanian", \_ -> Lang "sq" "" "" [])
|
||||
, ("serbian", \_ -> Lang "sr" "" "" [])
|
||||
, ("swedish", \_ -> Lang "sv" "" "" [])
|
||||
, ("syriac", \_ -> Lang "syr" "" "" [])
|
||||
, ("tamil", \_ -> Lang "ta" "" "" [])
|
||||
, ("telugu", \_ -> Lang "te" "" "" [])
|
||||
, ("thai", \_ -> Lang "th" "" "" [])
|
||||
, ("turkmen", \_ -> Lang "tk" "" "" [])
|
||||
, ("turkish", \_ -> Lang "tr" "" "" [])
|
||||
, ("ukrainian", \_ -> Lang "uk" "" "" [])
|
||||
, ("urdu", \_ -> Lang "ur" "" "" [])
|
||||
, ("vietnamese", \_ -> Lang "vi" "" "" [])
|
||||
]
|
||||
|
||||
babelLangToBCP47 :: String -> Maybe Lang
|
||||
babelLangToBCP47 s =
|
||||
case s of
|
||||
"austrian" -> Just $ Lang "de" "" "AT" ["1901"]
|
||||
"naustrian" -> Just $ Lang "de" "" "AT" []
|
||||
"swissgerman" -> Just $ Lang "de" "" "CH" ["1901"]
|
||||
"nswissgerman" -> Just $ Lang "de" "" "CH" []
|
||||
"german" -> Just $ Lang "de" "" "DE" ["1901"]
|
||||
"ngerman" -> Just $ Lang "de" "" "DE" []
|
||||
"lowersorbian" -> Just $ Lang "dsb" "" "" []
|
||||
"uppersorbian" -> Just $ Lang "hsb" "" "" []
|
||||
"polutonikogreek" -> Just $ Lang "el" "" "" ["polyton"]
|
||||
"slovene" -> Just $ Lang "sl" "" "" []
|
||||
"australian" -> Just $ Lang "en" "" "AU" []
|
||||
"canadian" -> Just $ Lang "en" "" "CA" []
|
||||
"british" -> Just $ Lang "en" "" "GB" []
|
||||
"newzealand" -> Just $ Lang "en" "" "NZ" []
|
||||
"american" -> Just $ Lang "en" "" "US" []
|
||||
"classiclatin" -> Just $ Lang "la" "" "" ["x-classic"]
|
||||
_ -> fmap ($ "") $ M.lookup s polyglossiaLangToBCP47
|
||||
|
|
173
src/Text/Pandoc/Readers/LaTeX/Lang.hs
Normal file
173
src/Text/Pandoc/Readers/LaTeX/Lang.hs
Normal file
|
@ -0,0 +1,173 @@
|
|||
{-# LANGUAGE NoImplicitPrelude #-}
|
||||
{-
|
||||
Copyright (C) 2018 John MacFarlane <jgm@berkeley.edu>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
-}
|
||||
|
||||
{- |
|
||||
Module : Text.Pandoc.Readers.LaTeX.Lang
|
||||
Copyright : Copyright (C) 2018 John MacFarlane
|
||||
License : GNU GPL, version 2 or above
|
||||
|
||||
Maintainer : John MacFarlane <jgm@berkeley.edu>
|
||||
Stability : alpha
|
||||
Portability : portable
|
||||
|
||||
Functions for parsing polyglossia and babel language specifiers to
|
||||
BCP47 'Lang'.
|
||||
-}
|
||||
module Text.Pandoc.Readers.LaTeX.Lang
|
||||
( polyglossiaLangToBCP47
|
||||
, babelLangToBCP47
|
||||
)
|
||||
where
|
||||
import Prelude
|
||||
import qualified Data.Map as M
|
||||
import Text.Pandoc.BCP47 (Lang(..))
|
||||
|
||||
polyglossiaLangToBCP47 :: M.Map String (String -> Lang)
|
||||
polyglossiaLangToBCP47 = M.fromList
|
||||
[ ("arabic", \o -> case filter (/=' ') o of
|
||||
"locale=algeria" -> Lang "ar" "" "DZ" []
|
||||
"locale=mashriq" -> Lang "ar" "" "SY" []
|
||||
"locale=libya" -> Lang "ar" "" "LY" []
|
||||
"locale=morocco" -> Lang "ar" "" "MA" []
|
||||
"locale=mauritania" -> Lang "ar" "" "MR" []
|
||||
"locale=tunisia" -> Lang "ar" "" "TN" []
|
||||
_ -> Lang "ar" "" "" [])
|
||||
, ("german", \o -> case filter (/=' ') o of
|
||||
"spelling=old" -> Lang "de" "" "DE" ["1901"]
|
||||
"variant=austrian,spelling=old"
|
||||
-> Lang "de" "" "AT" ["1901"]
|
||||
"variant=austrian" -> Lang "de" "" "AT" []
|
||||
"variant=swiss,spelling=old"
|
||||
-> Lang "de" "" "CH" ["1901"]
|
||||
"variant=swiss" -> Lang "de" "" "CH" []
|
||||
_ -> Lang "de" "" "" [])
|
||||
, ("lsorbian", \_ -> Lang "dsb" "" "" [])
|
||||
, ("greek", \o -> case filter (/=' ') o of
|
||||
"variant=poly" -> Lang "el" "" "polyton" []
|
||||
"variant=ancient" -> Lang "grc" "" "" []
|
||||
_ -> Lang "el" "" "" [])
|
||||
, ("english", \o -> case filter (/=' ') o of
|
||||
"variant=australian" -> Lang "en" "" "AU" []
|
||||
"variant=canadian" -> Lang "en" "" "CA" []
|
||||
"variant=british" -> Lang "en" "" "GB" []
|
||||
"variant=newzealand" -> Lang "en" "" "NZ" []
|
||||
"variant=american" -> Lang "en" "" "US" []
|
||||
_ -> Lang "en" "" "" [])
|
||||
, ("usorbian", \_ -> Lang "hsb" "" "" [])
|
||||
, ("latin", \o -> case filter (/=' ') o of
|
||||
"variant=classic" -> Lang "la" "" "" ["x-classic"]
|
||||
_ -> Lang "la" "" "" [])
|
||||
, ("slovenian", \_ -> Lang "sl" "" "" [])
|
||||
, ("serbianc", \_ -> Lang "sr" "cyrl" "" [])
|
||||
, ("pinyin", \_ -> Lang "zh" "Latn" "" ["pinyin"])
|
||||
, ("afrikaans", \_ -> Lang "af" "" "" [])
|
||||
, ("amharic", \_ -> Lang "am" "" "" [])
|
||||
, ("assamese", \_ -> Lang "as" "" "" [])
|
||||
, ("asturian", \_ -> Lang "ast" "" "" [])
|
||||
, ("bulgarian", \_ -> Lang "bg" "" "" [])
|
||||
, ("bengali", \_ -> Lang "bn" "" "" [])
|
||||
, ("tibetan", \_ -> Lang "bo" "" "" [])
|
||||
, ("breton", \_ -> Lang "br" "" "" [])
|
||||
, ("catalan", \_ -> Lang "ca" "" "" [])
|
||||
, ("welsh", \_ -> Lang "cy" "" "" [])
|
||||
, ("czech", \_ -> Lang "cs" "" "" [])
|
||||
, ("coptic", \_ -> Lang "cop" "" "" [])
|
||||
, ("danish", \_ -> Lang "da" "" "" [])
|
||||
, ("divehi", \_ -> Lang "dv" "" "" [])
|
||||
, ("esperanto", \_ -> Lang "eo" "" "" [])
|
||||
, ("spanish", \_ -> Lang "es" "" "" [])
|
||||
, ("estonian", \_ -> Lang "et" "" "" [])
|
||||
, ("basque", \_ -> Lang "eu" "" "" [])
|
||||
, ("farsi", \_ -> Lang "fa" "" "" [])
|
||||
, ("finnish", \_ -> Lang "fi" "" "" [])
|
||||
, ("french", \_ -> Lang "fr" "" "" [])
|
||||
, ("friulan", \_ -> Lang "fur" "" "" [])
|
||||
, ("irish", \_ -> Lang "ga" "" "" [])
|
||||
, ("scottish", \_ -> Lang "gd" "" "" [])
|
||||
, ("ethiopic", \_ -> Lang "gez" "" "" [])
|
||||
, ("galician", \_ -> Lang "gl" "" "" [])
|
||||
, ("hebrew", \_ -> Lang "he" "" "" [])
|
||||
, ("hindi", \_ -> Lang "hi" "" "" [])
|
||||
, ("croatian", \_ -> Lang "hr" "" "" [])
|
||||
, ("magyar", \_ -> Lang "hu" "" "" [])
|
||||
, ("armenian", \_ -> Lang "hy" "" "" [])
|
||||
, ("interlingua", \_ -> Lang "ia" "" "" [])
|
||||
, ("indonesian", \_ -> Lang "id" "" "" [])
|
||||
, ("icelandic", \_ -> Lang "is" "" "" [])
|
||||
, ("italian", \_ -> Lang "it" "" "" [])
|
||||
, ("japanese", \_ -> Lang "jp" "" "" [])
|
||||
, ("khmer", \_ -> Lang "km" "" "" [])
|
||||
, ("kurmanji", \_ -> Lang "kmr" "" "" [])
|
||||
, ("kannada", \_ -> Lang "kn" "" "" [])
|
||||
, ("korean", \_ -> Lang "ko" "" "" [])
|
||||
, ("lao", \_ -> Lang "lo" "" "" [])
|
||||
, ("lithuanian", \_ -> Lang "lt" "" "" [])
|
||||
, ("latvian", \_ -> Lang "lv" "" "" [])
|
||||
, ("malayalam", \_ -> Lang "ml" "" "" [])
|
||||
, ("mongolian", \_ -> Lang "mn" "" "" [])
|
||||
, ("marathi", \_ -> Lang "mr" "" "" [])
|
||||
, ("dutch", \_ -> Lang "nl" "" "" [])
|
||||
, ("nynorsk", \_ -> Lang "nn" "" "" [])
|
||||
, ("norsk", \_ -> Lang "no" "" "" [])
|
||||
, ("nko", \_ -> Lang "nqo" "" "" [])
|
||||
, ("occitan", \_ -> Lang "oc" "" "" [])
|
||||
, ("panjabi", \_ -> Lang "pa" "" "" [])
|
||||
, ("polish", \_ -> Lang "pl" "" "" [])
|
||||
, ("piedmontese", \_ -> Lang "pms" "" "" [])
|
||||
, ("portuguese", \_ -> Lang "pt" "" "" [])
|
||||
, ("romansh", \_ -> Lang "rm" "" "" [])
|
||||
, ("romanian", \_ -> Lang "ro" "" "" [])
|
||||
, ("russian", \_ -> Lang "ru" "" "" [])
|
||||
, ("sanskrit", \_ -> Lang "sa" "" "" [])
|
||||
, ("samin", \_ -> Lang "se" "" "" [])
|
||||
, ("slovak", \_ -> Lang "sk" "" "" [])
|
||||
, ("albanian", \_ -> Lang "sq" "" "" [])
|
||||
, ("serbian", \_ -> Lang "sr" "" "" [])
|
||||
, ("swedish", \_ -> Lang "sv" "" "" [])
|
||||
, ("syriac", \_ -> Lang "syr" "" "" [])
|
||||
, ("tamil", \_ -> Lang "ta" "" "" [])
|
||||
, ("telugu", \_ -> Lang "te" "" "" [])
|
||||
, ("thai", \_ -> Lang "th" "" "" [])
|
||||
, ("turkmen", \_ -> Lang "tk" "" "" [])
|
||||
, ("turkish", \_ -> Lang "tr" "" "" [])
|
||||
, ("ukrainian", \_ -> Lang "uk" "" "" [])
|
||||
, ("urdu", \_ -> Lang "ur" "" "" [])
|
||||
, ("vietnamese", \_ -> Lang "vi" "" "" [])
|
||||
]
|
||||
|
||||
babelLangToBCP47 :: String -> Maybe Lang
|
||||
babelLangToBCP47 s =
|
||||
case s of
|
||||
"austrian" -> Just $ Lang "de" "" "AT" ["1901"]
|
||||
"naustrian" -> Just $ Lang "de" "" "AT" []
|
||||
"swissgerman" -> Just $ Lang "de" "" "CH" ["1901"]
|
||||
"nswissgerman" -> Just $ Lang "de" "" "CH" []
|
||||
"german" -> Just $ Lang "de" "" "DE" ["1901"]
|
||||
"ngerman" -> Just $ Lang "de" "" "DE" []
|
||||
"lowersorbian" -> Just $ Lang "dsb" "" "" []
|
||||
"uppersorbian" -> Just $ Lang "hsb" "" "" []
|
||||
"polutonikogreek" -> Just $ Lang "el" "" "" ["polyton"]
|
||||
"slovene" -> Just $ Lang "sl" "" "" []
|
||||
"australian" -> Just $ Lang "en" "" "AU" []
|
||||
"canadian" -> Just $ Lang "en" "" "CA" []
|
||||
"british" -> Just $ Lang "en" "" "GB" []
|
||||
"newzealand" -> Just $ Lang "en" "" "NZ" []
|
||||
"american" -> Just $ Lang "en" "" "US" []
|
||||
"classiclatin" -> Just $ Lang "la" "" "" ["x-classic"]
|
||||
_ -> fmap ($ "") $ M.lookup s polyglossiaLangToBCP47
|
Loading…
Reference in a new issue