git.iko.soy/typeable/pandoc
on master help sign in
Moved babelLangToBCP, polyglossiaLangToBCP to new module...

Text.Pandoc.Readers.LaTeX.Lang (unexported).

commit799cd5db7a52573fff305a88196c4e7fd8dd0567 authorJohn MacFarlane <jgm@berkeley.edu> dateMon 1 Oct 2018, 21:27 (8 years ago) parent9abdbb2
3 files changed+176−134
pandoc.cabal+1 src/Text/Pandoc/Readers/LaTeX.hs+2−134 src/Text/Pandoc/Readers/LaTeX/Lang.hs+173
pandoc.cabal+1
@@ -510,6 +510,7 @@ library
510510 Text.Pandoc.Readers.Docx.StyleMap,
511511 Text.Pandoc.Readers.Docx.Fields,
512512 Text.Pandoc.Readers.LaTeX.Parsing,
513+ Text.Pandoc.Readers.LaTeX.Lang,
513514 Text.Pandoc.Readers.Odt.Base,
514515 Text.Pandoc.Readers.Odt.Namespaces,
515516 Text.Pandoc.Readers.Odt.StyleReader,
src/Text/Pandoc/Readers/LaTeX.hs+2−134
@@ -72,6 +72,8 @@ import Text.Pandoc.Parsing hiding (blankline, many, mathDisplay, mathInline,
7272import Text.Pandoc.Readers.LaTeX.Types (ExpansionPoint (..), Macro (..),
7373 ArgSpec (..), Tok (..), TokType (..))
7474import Text.Pandoc.Readers.LaTeX.Parsing
75+import Text.Pandoc.Readers.LaTeX.Lang (polyglossiaLangToBCP47,
76+ babelLangToBCP47)
7577import Text.Pandoc.Shared
7678import qualified Text.Pandoc.Translations as Translations
7779import Text.Pandoc.Walk
@@ -2265,137 +2267,3 @@ setDefaultLanguage = do
22652267 setTranslations l
22662268 updateState $ setMeta "lang" $ str (renderLang l)
22672269 return mempty
2268−
2269−polyglossiaLangToBCP47 :: M.Map String (String -> Lang)
2270−polyglossiaLangToBCP47 = M.fromList
2271− [ ("arabic", \o -> case filter (/=' ') o of
2272− "locale=algeria" -> Lang "ar" "" "DZ" []
2273− "locale=mashriq" -> Lang "ar" "" "SY" []
2274− "locale=libya" -> Lang "ar" "" "LY" []
2275− "locale=morocco" -> Lang "ar" "" "MA" []
2276− "locale=mauritania" -> Lang "ar" "" "MR" []
2277− "locale=tunisia" -> Lang "ar" "" "TN" []
2278− _ -> Lang "ar" "" "" [])
2279− , ("german", \o -> case filter (/=' ') o of
2280− "spelling=old" -> Lang "de" "" "DE" ["1901"]
2281− "variant=austrian,spelling=old"
2282− -> Lang "de" "" "AT" ["1901"]
2283− "variant=austrian" -> Lang "de" "" "AT" []
2284− "variant=swiss,spelling=old"
2285− -> Lang "de" "" "CH" ["1901"]
2286− "variant=swiss" -> Lang "de" "" "CH" []
2287− _ -> Lang "de" "" "" [])
2288− , ("lsorbian", \_ -> Lang "dsb" "" "" [])
2289− , ("greek", \o -> case filter (/=' ') o of
2290− "variant=poly" -> Lang "el" "" "polyton" []
2291− "variant=ancient" -> Lang "grc" "" "" []
2292− _ -> Lang "el" "" "" [])
2293− , ("english", \o -> case filter (/=' ') o of
2294− "variant=australian" -> Lang "en" "" "AU" []
2295− "variant=canadian" -> Lang "en" "" "CA" []
2296− "variant=british" -> Lang "en" "" "GB" []
2297− "variant=newzealand" -> Lang "en" "" "NZ" []
2298− "variant=american" -> Lang "en" "" "US" []
2299− _ -> Lang "en" "" "" [])
2300− , ("usorbian", \_ -> Lang "hsb" "" "" [])
2301− , ("latin", \o -> case filter (/=' ') o of
2302− "variant=classic" -> Lang "la" "" "" ["x-classic"]
2303− _ -> Lang "la" "" "" [])
2304− , ("slovenian", \_ -> Lang "sl" "" "" [])
2305− , ("serbianc", \_ -> Lang "sr" "cyrl" "" [])
2306− , ("pinyin", \_ -> Lang "zh" "Latn" "" ["pinyin"])
2307− , ("afrikaans", \_ -> Lang "af" "" "" [])
2308− , ("amharic", \_ -> Lang "am" "" "" [])
2309− , ("assamese", \_ -> Lang "as" "" "" [])
2310− , ("asturian", \_ -> Lang "ast" "" "" [])
2311− , ("bulgarian", \_ -> Lang "bg" "" "" [])
2312− , ("bengali", \_ -> Lang "bn" "" "" [])
2313− , ("tibetan", \_ -> Lang "bo" "" "" [])
2314− , ("breton", \_ -> Lang "br" "" "" [])
2315− , ("catalan", \_ -> Lang "ca" "" "" [])
2316− , ("welsh", \_ -> Lang "cy" "" "" [])
2317− , ("czech", \_ -> Lang "cs" "" "" [])
2318− , ("coptic", \_ -> Lang "cop" "" "" [])
2319− , ("danish", \_ -> Lang "da" "" "" [])
2320− , ("divehi", \_ -> Lang "dv" "" "" [])
2321− , ("esperanto", \_ -> Lang "eo" "" "" [])
2322− , ("spanish", \_ -> Lang "es" "" "" [])
2323− , ("estonian", \_ -> Lang "et" "" "" [])
2324− , ("basque", \_ -> Lang "eu" "" "" [])
2325− , ("farsi", \_ -> Lang "fa" "" "" [])
2326− , ("finnish", \_ -> Lang "fi" "" "" [])
2327− , ("french", \_ -> Lang "fr" "" "" [])
2328− , ("friulan", \_ -> Lang "fur" "" "" [])
2329− , ("irish", \_ -> Lang "ga" "" "" [])
2330− , ("scottish", \_ -> Lang "gd" "" "" [])
2331− , ("ethiopic", \_ -> Lang "gez" "" "" [])
2332− , ("galician", \_ -> Lang "gl" "" "" [])
2333− , ("hebrew", \_ -> Lang "he" "" "" [])
2334− , ("hindi", \_ -> Lang "hi" "" "" [])
2335− , ("croatian", \_ -> Lang "hr" "" "" [])
2336− , ("magyar", \_ -> Lang "hu" "" "" [])
2337− , ("armenian", \_ -> Lang "hy" "" "" [])
2338− , ("interlingua", \_ -> Lang "ia" "" "" [])
2339− , ("indonesian", \_ -> Lang "id" "" "" [])
2340− , ("icelandic", \_ -> Lang "is" "" "" [])
2341− , ("italian", \_ -> Lang "it" "" "" [])
2342− , ("japanese", \_ -> Lang "jp" "" "" [])
2343− , ("khmer", \_ -> Lang "km" "" "" [])
2344− , ("kurmanji", \_ -> Lang "kmr" "" "" [])
2345− , ("kannada", \_ -> Lang "kn" "" "" [])
2346− , ("korean", \_ -> Lang "ko" "" "" [])
2347− , ("lao", \_ -> Lang "lo" "" "" [])
2348− , ("lithuanian", \_ -> Lang "lt" "" "" [])
2349− , ("latvian", \_ -> Lang "lv" "" "" [])
2350− , ("malayalam", \_ -> Lang "ml" "" "" [])
2351− , ("mongolian", \_ -> Lang "mn" "" "" [])
2352− , ("marathi", \_ -> Lang "mr" "" "" [])
2353− , ("dutch", \_ -> Lang "nl" "" "" [])
2354− , ("nynorsk", \_ -> Lang "nn" "" "" [])
2355− , ("norsk", \_ -> Lang "no" "" "" [])
2356− , ("nko", \_ -> Lang "nqo" "" "" [])
2357− , ("occitan", \_ -> Lang "oc" "" "" [])
2358− , ("panjabi", \_ -> Lang "pa" "" "" [])
2359− , ("polish", \_ -> Lang "pl" "" "" [])
2360− , ("piedmontese", \_ -> Lang "pms" "" "" [])
2361− , ("portuguese", \_ -> Lang "pt" "" "" [])
2362− , ("romansh", \_ -> Lang "rm" "" "" [])
2363− , ("romanian", \_ -> Lang "ro" "" "" [])
2364− , ("russian", \_ -> Lang "ru" "" "" [])
2365− , ("sanskrit", \_ -> Lang "sa" "" "" [])
2366− , ("samin", \_ -> Lang "se" "" "" [])
2367− , ("slovak", \_ -> Lang "sk" "" "" [])
2368− , ("albanian", \_ -> Lang "sq" "" "" [])
2369− , ("serbian", \_ -> Lang "sr" "" "" [])
2370− , ("swedish", \_ -> Lang "sv" "" "" [])
2371− , ("syriac", \_ -> Lang "syr" "" "" [])
2372− , ("tamil", \_ -> Lang "ta" "" "" [])
2373− , ("telugu", \_ -> Lang "te" "" "" [])
2374− , ("thai", \_ -> Lang "th" "" "" [])
2375− , ("turkmen", \_ -> Lang "tk" "" "" [])
2376− , ("turkish", \_ -> Lang "tr" "" "" [])
2377− , ("ukrainian", \_ -> Lang "uk" "" "" [])
2378− , ("urdu", \_ -> Lang "ur" "" "" [])
2379− , ("vietnamese", \_ -> Lang "vi" "" "" [])
2380− ]
2381−
2382−babelLangToBCP47 :: String -> Maybe Lang
2383−babelLangToBCP47 s =
2384− case s of
2385− "austrian" -> Just $ Lang "de" "" "AT" ["1901"]
2386− "naustrian" -> Just $ Lang "de" "" "AT" []
2387− "swissgerman" -> Just $ Lang "de" "" "CH" ["1901"]
2388− "nswissgerman" -> Just $ Lang "de" "" "CH" []
2389− "german" -> Just $ Lang "de" "" "DE" ["1901"]
2390− "ngerman" -> Just $ Lang "de" "" "DE" []
2391− "lowersorbian" -> Just $ Lang "dsb" "" "" []
2392− "uppersorbian" -> Just $ Lang "hsb" "" "" []
2393− "polutonikogreek" -> Just $ Lang "el" "" "" ["polyton"]
2394− "slovene" -> Just $ Lang "sl" "" "" []
2395− "australian" -> Just $ Lang "en" "" "AU" []
2396− "canadian" -> Just $ Lang "en" "" "CA" []
2397− "british" -> Just $ Lang "en" "" "GB" []
2398− "newzealand" -> Just $ Lang "en" "" "NZ" []
2399− "american" -> Just $ Lang "en" "" "US" []
2400− "classiclatin" -> Just $ Lang "la" "" "" ["x-classic"]
2401− _ -> fmap ($ "") $ M.lookup s polyglossiaLangToBCP47
src/Text/Pandoc/Readers/LaTeX/Lang.hsnew file+173
@@ -0,0 +1,173 @@
1+{-# LANGUAGE NoImplicitPrelude #-}
2+{-
3+Copyright (C) 2018 John MacFarlane <jgm@berkeley.edu>
4+
5+This program is free software; you can redistribute it and/or modify
6+it under the terms of the GNU General Public License as published by
7+the Free Software Foundation; either version 2 of the License, or
8+(at your option) any later version.
9+
10+This program is distributed in the hope that it will be useful,
11+but WITHOUT ANY WARRANTY; without even the implied warranty of
12+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+GNU General Public License for more details.
14+
15+You should have received a copy of the GNU General Public License
16+along with this program; if not, write to the Free Software
17+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18+-}
19+
20+{- |
21+ Module : Text.Pandoc.Readers.LaTeX.Lang
22+ Copyright : Copyright (C) 2018 John MacFarlane
23+ License : GNU GPL, version 2 or above
24+
25+ Maintainer : John MacFarlane <jgm@berkeley.edu>
26+ Stability : alpha
27+ Portability : portable
28+
29+Functions for parsing polyglossia and babel language specifiers to
30+BCP47 'Lang'.
31+-}
32+module Text.Pandoc.Readers.LaTeX.Lang
33+ ( polyglossiaLangToBCP47
34+ , babelLangToBCP47
35+ )
36+where
37+import Prelude
38+import qualified Data.Map as M
39+import Text.Pandoc.BCP47 (Lang(..))
40+
41+polyglossiaLangToBCP47 :: M.Map String (String -> Lang)
42+polyglossiaLangToBCP47 = M.fromList
43+ [ ("arabic", \o -> case filter (/=' ') o of
44+ "locale=algeria" -> Lang "ar" "" "DZ" []
45+ "locale=mashriq" -> Lang "ar" "" "SY" []
46+ "locale=libya" -> Lang "ar" "" "LY" []
47+ "locale=morocco" -> Lang "ar" "" "MA" []
48+ "locale=mauritania" -> Lang "ar" "" "MR" []
49+ "locale=tunisia" -> Lang "ar" "" "TN" []
50+ _ -> Lang "ar" "" "" [])
51+ , ("german", \o -> case filter (/=' ') o of
52+ "spelling=old" -> Lang "de" "" "DE" ["1901"]
53+ "variant=austrian,spelling=old"
54+ -> Lang "de" "" "AT" ["1901"]
55+ "variant=austrian" -> Lang "de" "" "AT" []
56+ "variant=swiss,spelling=old"
57+ -> Lang "de" "" "CH" ["1901"]
58+ "variant=swiss" -> Lang "de" "" "CH" []
59+ _ -> Lang "de" "" "" [])
60+ , ("lsorbian", \_ -> Lang "dsb" "" "" [])
61+ , ("greek", \o -> case filter (/=' ') o of
62+ "variant=poly" -> Lang "el" "" "polyton" []
63+ "variant=ancient" -> Lang "grc" "" "" []
64+ _ -> Lang "el" "" "" [])
65+ , ("english", \o -> case filter (/=' ') o of
66+ "variant=australian" -> Lang "en" "" "AU" []
67+ "variant=canadian" -> Lang "en" "" "CA" []
68+ "variant=british" -> Lang "en" "" "GB" []
69+ "variant=newzealand" -> Lang "en" "" "NZ" []
70+ "variant=american" -> Lang "en" "" "US" []
71+ _ -> Lang "en" "" "" [])
72+ , ("usorbian", \_ -> Lang "hsb" "" "" [])
73+ , ("latin", \o -> case filter (/=' ') o of
74+ "variant=classic" -> Lang "la" "" "" ["x-classic"]
75+ _ -> Lang "la" "" "" [])
76+ , ("slovenian", \_ -> Lang "sl" "" "" [])
77+ , ("serbianc", \_ -> Lang "sr" "cyrl" "" [])
78+ , ("pinyin", \_ -> Lang "zh" "Latn" "" ["pinyin"])
79+ , ("afrikaans", \_ -> Lang "af" "" "" [])
80+ , ("amharic", \_ -> Lang "am" "" "" [])
81+ , ("assamese", \_ -> Lang "as" "" "" [])
82+ , ("asturian", \_ -> Lang "ast" "" "" [])
83+ , ("bulgarian", \_ -> Lang "bg" "" "" [])
84+ , ("bengali", \_ -> Lang "bn" "" "" [])
85+ , ("tibetan", \_ -> Lang "bo" "" "" [])
86+ , ("breton", \_ -> Lang "br" "" "" [])
87+ , ("catalan", \_ -> Lang "ca" "" "" [])
88+ , ("welsh", \_ -> Lang "cy" "" "" [])
89+ , ("czech", \_ -> Lang "cs" "" "" [])
90+ , ("coptic", \_ -> Lang "cop" "" "" [])
91+ , ("danish", \_ -> Lang "da" "" "" [])
92+ , ("divehi", \_ -> Lang "dv" "" "" [])
93+ , ("esperanto", \_ -> Lang "eo" "" "" [])
94+ , ("spanish", \_ -> Lang "es" "" "" [])
95+ , ("estonian", \_ -> Lang "et" "" "" [])
96+ , ("basque", \_ -> Lang "eu" "" "" [])
97+ , ("farsi", \_ -> Lang "fa" "" "" [])
98+ , ("finnish", \_ -> Lang "fi" "" "" [])
99+ , ("french", \_ -> Lang "fr" "" "" [])
100+ , ("friulan", \_ -> Lang "fur" "" "" [])
101+ , ("irish", \_ -> Lang "ga" "" "" [])
102+ , ("scottish", \_ -> Lang "gd" "" "" [])
103+ , ("ethiopic", \_ -> Lang "gez" "" "" [])
104+ , ("galician", \_ -> Lang "gl" "" "" [])
105+ , ("hebrew", \_ -> Lang "he" "" "" [])
106+ , ("hindi", \_ -> Lang "hi" "" "" [])
107+ , ("croatian", \_ -> Lang "hr" "" "" [])
108+ , ("magyar", \_ -> Lang "hu" "" "" [])
109+ , ("armenian", \_ -> Lang "hy" "" "" [])
110+ , ("interlingua", \_ -> Lang "ia" "" "" [])
111+ , ("indonesian", \_ -> Lang "id" "" "" [])
112+ , ("icelandic", \_ -> Lang "is" "" "" [])
113+ , ("italian", \_ -> Lang "it" "" "" [])
114+ , ("japanese", \_ -> Lang "jp" "" "" [])
115+ , ("khmer", \_ -> Lang "km" "" "" [])
116+ , ("kurmanji", \_ -> Lang "kmr" "" "" [])
117+ , ("kannada", \_ -> Lang "kn" "" "" [])
118+ , ("korean", \_ -> Lang "ko" "" "" [])
119+ , ("lao", \_ -> Lang "lo" "" "" [])
120+ , ("lithuanian", \_ -> Lang "lt" "" "" [])
121+ , ("latvian", \_ -> Lang "lv" "" "" [])
122+ , ("malayalam", \_ -> Lang "ml" "" "" [])
123+ , ("mongolian", \_ -> Lang "mn" "" "" [])
124+ , ("marathi", \_ -> Lang "mr" "" "" [])
125+ , ("dutch", \_ -> Lang "nl" "" "" [])
126+ , ("nynorsk", \_ -> Lang "nn" "" "" [])
127+ , ("norsk", \_ -> Lang "no" "" "" [])
128+ , ("nko", \_ -> Lang "nqo" "" "" [])
129+ , ("occitan", \_ -> Lang "oc" "" "" [])
130+ , ("panjabi", \_ -> Lang "pa" "" "" [])
131+ , ("polish", \_ -> Lang "pl" "" "" [])
132+ , ("piedmontese", \_ -> Lang "pms" "" "" [])
133+ , ("portuguese", \_ -> Lang "pt" "" "" [])
134+ , ("romansh", \_ -> Lang "rm" "" "" [])
135+ , ("romanian", \_ -> Lang "ro" "" "" [])
136+ , ("russian", \_ -> Lang "ru" "" "" [])
137+ , ("sanskrit", \_ -> Lang "sa" "" "" [])
138+ , ("samin", \_ -> Lang "se" "" "" [])
139+ , ("slovak", \_ -> Lang "sk" "" "" [])
140+ , ("albanian", \_ -> Lang "sq" "" "" [])
141+ , ("serbian", \_ -> Lang "sr" "" "" [])
142+ , ("swedish", \_ -> Lang "sv" "" "" [])
143+ , ("syriac", \_ -> Lang "syr" "" "" [])
144+ , ("tamil", \_ -> Lang "ta" "" "" [])
145+ , ("telugu", \_ -> Lang "te" "" "" [])
146+ , ("thai", \_ -> Lang "th" "" "" [])
147+ , ("turkmen", \_ -> Lang "tk" "" "" [])
148+ , ("turkish", \_ -> Lang "tr" "" "" [])
149+ , ("ukrainian", \_ -> Lang "uk" "" "" [])
150+ , ("urdu", \_ -> Lang "ur" "" "" [])
151+ , ("vietnamese", \_ -> Lang "vi" "" "" [])
152+ ]
153+
154+babelLangToBCP47 :: String -> Maybe Lang
155+babelLangToBCP47 s =
156+ case s of
157+ "austrian" -> Just $ Lang "de" "" "AT" ["1901"]
158+ "naustrian" -> Just $ Lang "de" "" "AT" []
159+ "swissgerman" -> Just $ Lang "de" "" "CH" ["1901"]
160+ "nswissgerman" -> Just $ Lang "de" "" "CH" []
161+ "german" -> Just $ Lang "de" "" "DE" ["1901"]
162+ "ngerman" -> Just $ Lang "de" "" "DE" []
163+ "lowersorbian" -> Just $ Lang "dsb" "" "" []
164+ "uppersorbian" -> Just $ Lang "hsb" "" "" []
165+ "polutonikogreek" -> Just $ Lang "el" "" "" ["polyton"]
166+ "slovene" -> Just $ Lang "sl" "" "" []
167+ "australian" -> Just $ Lang "en" "" "AU" []
168+ "canadian" -> Just $ Lang "en" "" "CA" []
169+ "british" -> Just $ Lang "en" "" "GB" []
170+ "newzealand" -> Just $ Lang "en" "" "NZ" []
171+ "american" -> Just $ Lang "en" "" "US" []
172+ "classiclatin" -> Just $ Lang "la" "" "" ["x-classic"]
173+ _ -> fmap ($ "") $ M.lookup s polyglossiaLangToBCP47