@@ -23,7 +23,7 @@ import qualified Data.Map as M
23import Data.Text (Text)
23import Data.Text (Text)
24import qualified Data.Text as T
24import qualified Data.Text as T
25import Text.Pandoc.Shared (extractSpaces)
25import Text.Pandoc.Shared (extractSpaces)
26−import Text.Pandoc.BCP47 (Lang(..), renderLang)
26+import UnicodeCollation.Lang (Lang(..), renderLang)
27import Text.Pandoc.Class (PandocMonad(..), setTranslations)
27import Text.Pandoc.Class (PandocMonad(..), setTranslations)
28import Text.Pandoc.Readers.LaTeX.Parsing
28import Text.Pandoc.Readers.LaTeX.Parsing
29import Text.Pandoc.Parsing (updateState, option, getState, QuoteContext(..),
29import Text.Pandoc.Parsing (updateState, option, getState, QuoteContext(..),
@@ -99,133 +99,136 @@ setDefaultLanguage = do
99polyglossiaLangToBCP47 :: M.Map T.Text (T.Text -> Lang)
99polyglossiaLangToBCP47 :: M.Map T.Text (T.Text -> Lang)
100polyglossiaLangToBCP47 = M.fromList
100polyglossiaLangToBCP47 = M.fromList
101 [ ("arabic", \o -> case T.filter (/=' ') o of
101 [ ("arabic", \o -> case T.filter (/=' ') o of
102− "locale=algeria" -> Lang "ar" "" "DZ" []
102+ "locale=algeria" -> Lang "ar" Nothing (Just "DZ") [] [] []
103− "locale=mashriq" -> Lang "ar" "" "SY" []
103+ "locale=mashriq" -> Lang "ar" Nothing (Just "SY") [] [] []
104− "locale=libya" -> Lang "ar" "" "LY" []
104+ "locale=libya" -> Lang "ar" Nothing (Just "LY") [] [] []
105− "locale=morocco" -> Lang "ar" "" "MA" []
105+ "locale=morocco" -> Lang "ar" Nothing (Just "MA") [] [] []
106− "locale=mauritania" -> Lang "ar" "" "MR" []
106+ "locale=mauritania" -> Lang "ar" Nothing (Just "MR") [] [] []
107− "locale=tunisia" -> Lang "ar" "" "TN" []
107+ "locale=tunisia" -> Lang "ar" Nothing (Just "TN") [] [] []
108− _ -> Lang "ar" "" "" [])
108+ _ -> Lang "ar" Nothing (Just "") [] [] [])
109 , ("german", \o -> case T.filter (/=' ') o of
109 , ("german", \o -> case T.filter (/=' ') o of
110− "spelling=old" -> Lang "de" "" "DE" ["1901"]
110+ "spelling=old" -> Lang "de" Nothing (Just "DE") ["1901"] [] []
111 "variant=austrian,spelling=old"
111 "variant=austrian,spelling=old"
112− -> Lang "de" "" "AT" ["1901"]
112+ -> Lang "de" Nothing (Just "AT") ["1901"] [] []
113− "variant=austrian" -> Lang "de" "" "AT" []
113+ "variant=austrian" -> Lang "de" Nothing (Just "AT") [] [] []
114 "variant=swiss,spelling=old"
114 "variant=swiss,spelling=old"
115− -> Lang "de" "" "CH" ["1901"]
115+ -> Lang "de" Nothing (Just "CH") ["1901"] [] []
116− "variant=swiss" -> Lang "de" "" "CH" []
116+ "variant=swiss" -> Lang "de" Nothing (Just "CH") [] [] []
117− _ -> Lang "de" "" "" [])
117+ _ -> Lang "de" Nothing Nothing [] [] [])
118− , ("lsorbian", \_ -> Lang "dsb" "" "" [])
118+ , ("lsorbian", \_ -> Lang "dsb" Nothing Nothing [] [] [])
119 , ("greek", \o -> case T.filter (/=' ') o of
119 , ("greek", \o -> case T.filter (/=' ') o of
120− "variant=poly" -> Lang "el" "" "polyton" []
120+ "variant=poly" -> Lang "el" Nothing (Just "polyton") [] [] []
121− "variant=ancient" -> Lang "grc" "" "" []
121+ "variant=ancient" -> Lang "grc" Nothing Nothing [] [] []
122− _ -> Lang "el" "" "" [])
122+ _ -> Lang "el" Nothing Nothing [] [] [])
123 , ("english", \o -> case T.filter (/=' ') o of
123 , ("english", \o -> case T.filter (/=' ') o of
124− "variant=australian" -> Lang "en" "" "AU" []
124+ "variant=australian" -> Lang "en" Nothing (Just "AU") [] [] []
125− "variant=canadian" -> Lang "en" "" "CA" []
125+ "variant=canadian" -> Lang "en" Nothing (Just "CA") [] [] []
126− "variant=british" -> Lang "en" "" "GB" []
126+ "variant=british" -> Lang "en" Nothing (Just "GB") [] [] []
127− "variant=newzealand" -> Lang "en" "" "NZ" []
127+ "variant=newzealand" -> Lang "en" Nothing (Just "NZ") [] [] []
128− "variant=american" -> Lang "en" "" "US" []
128+ "variant=american" -> Lang "en" Nothing (Just "US") [] [] []
129− _ -> Lang "en" "" "" [])
129+ _ -> Lang "en" Nothing (Just "") [] [] [])
130− , ("usorbian", \_ -> Lang "hsb" "" "" [])
130+ , ("usorbian", \_ -> Lang "hsb" Nothing Nothing [] [] [])
131 , ("latin", \o -> case T.filter (/=' ') o of
131 , ("latin", \o -> case T.filter (/=' ') o of
132− "variant=classic" -> Lang "la" "" "" ["x-classic"]
132+ "variant=classic" -> Lang "la" Nothing Nothing ["x-classic"] [] []
133− _ -> Lang "la" "" "" [])
133+ _ -> Lang "la" Nothing Nothing [] [] [])
134− , ("slovenian", \_ -> Lang "sl" "" "" [])
134+ , ("slovenian", \_ -> Lang "sl" Nothing Nothing [] [] [])
135− , ("serbianc", \_ -> Lang "sr" "cyrl" "" [])
135+ , ("serbianc", \_ -> Lang "sr" (Just "Cyrl") Nothing [] [] [])
136− , ("pinyin", \_ -> Lang "zh" "Latn" "" ["pinyin"])
136+ , ("pinyin", \_ -> Lang "zh" (Just "Latn") Nothing ["pinyin"] [] [])
137− , ("afrikaans", \_ -> Lang "af" "" "" [])
137+ , ("afrikaans", \_ -> simpleLang "af")
138− , ("amharic", \_ -> Lang "am" "" "" [])
138+ , ("amharic", \_ -> simpleLang "am")
139− , ("assamese", \_ -> Lang "as" "" "" [])
139+ , ("assamese", \_ -> simpleLang "as")
140− , ("asturian", \_ -> Lang "ast" "" "" [])
140+ , ("asturian", \_ -> simpleLang "ast")
141− , ("bulgarian", \_ -> Lang "bg" "" "" [])
141+ , ("bulgarian", \_ -> simpleLang "bg")
142− , ("bengali", \_ -> Lang "bn" "" "" [])
142+ , ("bengali", \_ -> simpleLang "bn")
143− , ("tibetan", \_ -> Lang "bo" "" "" [])
143+ , ("tibetan", \_ -> simpleLang "bo")
144− , ("breton", \_ -> Lang "br" "" "" [])
144+ , ("breton", \_ -> simpleLang "br")
145− , ("catalan", \_ -> Lang "ca" "" "" [])
145+ , ("catalan", \_ -> simpleLang "ca")
146− , ("welsh", \_ -> Lang "cy" "" "" [])
146+ , ("welsh", \_ -> simpleLang "cy")
147− , ("czech", \_ -> Lang "cs" "" "" [])
147+ , ("czech", \_ -> simpleLang "cs")
148− , ("coptic", \_ -> Lang "cop" "" "" [])
148+ , ("coptic", \_ -> simpleLang "cop")
149− , ("danish", \_ -> Lang "da" "" "" [])
149+ , ("danish", \_ -> simpleLang "da")
150− , ("divehi", \_ -> Lang "dv" "" "" [])
150+ , ("divehi", \_ -> simpleLang "dv")
151− , ("esperanto", \_ -> Lang "eo" "" "" [])
151+ , ("esperanto", \_ -> simpleLang "eo")
152− , ("spanish", \_ -> Lang "es" "" "" [])
152+ , ("spanish", \_ -> simpleLang "es")
153− , ("estonian", \_ -> Lang "et" "" "" [])
153+ , ("estonian", \_ -> simpleLang "et")
154− , ("basque", \_ -> Lang "eu" "" "" [])
154+ , ("basque", \_ -> simpleLang "eu")
155− , ("farsi", \_ -> Lang "fa" "" "" [])
155+ , ("farsi", \_ -> simpleLang "fa")
156− , ("finnish", \_ -> Lang "fi" "" "" [])
156+ , ("finnish", \_ -> simpleLang "fi")
157− , ("french", \_ -> Lang "fr" "" "" [])
157+ , ("french", \_ -> simpleLang "fr")
158− , ("friulan", \_ -> Lang "fur" "" "" [])
158+ , ("friulan", \_ -> simpleLang "fur")
159− , ("irish", \_ -> Lang "ga" "" "" [])
159+ , ("irish", \_ -> simpleLang "ga")
160− , ("scottish", \_ -> Lang "gd" "" "" [])
160+ , ("scottish", \_ -> simpleLang "gd")
161− , ("ethiopic", \_ -> Lang "gez" "" "" [])
161+ , ("ethiopic", \_ -> simpleLang "gez")
162− , ("galician", \_ -> Lang "gl" "" "" [])
162+ , ("galician", \_ -> simpleLang "gl")
163− , ("hebrew", \_ -> Lang "he" "" "" [])
163+ , ("hebrew", \_ -> simpleLang "he")
164− , ("hindi", \_ -> Lang "hi" "" "" [])
164+ , ("hindi", \_ -> simpleLang "hi")
165− , ("croatian", \_ -> Lang "hr" "" "" [])
165+ , ("croatian", \_ -> simpleLang "hr")
166− , ("magyar", \_ -> Lang "hu" "" "" [])
166+ , ("magyar", \_ -> simpleLang "hu")
167− , ("armenian", \_ -> Lang "hy" "" "" [])
167+ , ("armenian", \_ -> simpleLang "hy")
168− , ("interlingua", \_ -> Lang "ia" "" "" [])
168+ , ("interlingua", \_ -> simpleLang "ia")
169− , ("indonesian", \_ -> Lang "id" "" "" [])
169+ , ("indonesian", \_ -> simpleLang "id")
170− , ("icelandic", \_ -> Lang "is" "" "" [])
170+ , ("icelandic", \_ -> simpleLang "is")
171− , ("italian", \_ -> Lang "it" "" "" [])
171+ , ("italian", \_ -> simpleLang "it")
172− , ("japanese", \_ -> Lang "jp" "" "" [])
172+ , ("japanese", \_ -> simpleLang "jp")
173− , ("khmer", \_ -> Lang "km" "" "" [])
173+ , ("khmer", \_ -> simpleLang "km")
174− , ("kurmanji", \_ -> Lang "kmr" "" "" [])
174+ , ("kurmanji", \_ -> simpleLang "kmr")
175− , ("kannada", \_ -> Lang "kn" "" "" [])
175+ , ("kannada", \_ -> simpleLang "kn")
176− , ("korean", \_ -> Lang "ko" "" "" [])
176+ , ("korean", \_ -> simpleLang "ko")
177− , ("lao", \_ -> Lang "lo" "" "" [])
177+ , ("lao", \_ -> simpleLang "lo")
178− , ("lithuanian", \_ -> Lang "lt" "" "" [])
178+ , ("lithuanian", \_ -> simpleLang "lt")
179− , ("latvian", \_ -> Lang "lv" "" "" [])
179+ , ("latvian", \_ -> simpleLang "lv")
180− , ("malayalam", \_ -> Lang "ml" "" "" [])
180+ , ("malayalam", \_ -> simpleLang "ml")
181− , ("mongolian", \_ -> Lang "mn" "" "" [])
181+ , ("mongolian", \_ -> simpleLang "mn")
182− , ("marathi", \_ -> Lang "mr" "" "" [])
182+ , ("marathi", \_ -> simpleLang "mr")
183− , ("dutch", \_ -> Lang "nl" "" "" [])
183+ , ("dutch", \_ -> simpleLang "nl")
184− , ("nynorsk", \_ -> Lang "nn" "" "" [])
184+ , ("nynorsk", \_ -> simpleLang "nn")
185− , ("norsk", \_ -> Lang "no" "" "" [])
185+ , ("norsk", \_ -> simpleLang "no")
186− , ("nko", \_ -> Lang "nqo" "" "" [])
186+ , ("nko", \_ -> simpleLang "nqo")
187− , ("occitan", \_ -> Lang "oc" "" "" [])
187+ , ("occitan", \_ -> simpleLang "oc")
188− , ("panjabi", \_ -> Lang "pa" "" "" [])
188+ , ("panjabi", \_ -> simpleLang "pa")
189− , ("polish", \_ -> Lang "pl" "" "" [])
189+ , ("polish", \_ -> simpleLang "pl")
190− , ("piedmontese", \_ -> Lang "pms" "" "" [])
190+ , ("piedmontese", \_ -> simpleLang "pms")
191− , ("portuguese", \_ -> Lang "pt" "" "" [])
191+ , ("portuguese", \_ -> simpleLang "pt")
192− , ("romansh", \_ -> Lang "rm" "" "" [])
192+ , ("romansh", \_ -> simpleLang "rm")
193− , ("romanian", \_ -> Lang "ro" "" "" [])
193+ , ("romanian", \_ -> simpleLang "ro")
194− , ("russian", \_ -> Lang "ru" "" "" [])
194+ , ("russian", \_ -> simpleLang "ru")
195− , ("sanskrit", \_ -> Lang "sa" "" "" [])
195+ , ("sanskrit", \_ -> simpleLang "sa")
196− , ("samin", \_ -> Lang "se" "" "" [])
196+ , ("samin", \_ -> simpleLang "se")
197− , ("slovak", \_ -> Lang "sk" "" "" [])
197+ , ("slovak", \_ -> simpleLang "sk")
198− , ("albanian", \_ -> Lang "sq" "" "" [])
198+ , ("albanian", \_ -> simpleLang "sq")
199− , ("serbian", \_ -> Lang "sr" "" "" [])
199+ , ("serbian", \_ -> simpleLang "sr")
200− , ("swedish", \_ -> Lang "sv" "" "" [])
200+ , ("swedish", \_ -> simpleLang "sv")
201− , ("syriac", \_ -> Lang "syr" "" "" [])
201+ , ("syriac", \_ -> simpleLang "syr")
202− , ("tamil", \_ -> Lang "ta" "" "" [])
202+ , ("tamil", \_ -> simpleLang "ta")
203− , ("telugu", \_ -> Lang "te" "" "" [])
203+ , ("telugu", \_ -> simpleLang "te")
204− , ("thai", \_ -> Lang "th" "" "" [])
204+ , ("thai", \_ -> simpleLang "th")
205− , ("turkmen", \_ -> Lang "tk" "" "" [])
205+ , ("turkmen", \_ -> simpleLang "tk")
206− , ("turkish", \_ -> Lang "tr" "" "" [])
206+ , ("turkish", \_ -> simpleLang "tr")
207− , ("ukrainian", \_ -> Lang "uk" "" "" [])
207+ , ("ukrainian", \_ -> simpleLang "uk")
208− , ("urdu", \_ -> Lang "ur" "" "" [])
208+ , ("urdu", \_ -> simpleLang "ur")
209− , ("vietnamese", \_ -> Lang "vi" "" "" [])
209+ , ("vietnamese", \_ -> simpleLang "vi")
212+simpleLang :: Text -> Lang
213+simpleLang l = Lang l Nothing Nothing [] [] []
212babelLangToBCP47 :: T.Text -> Maybe Lang
215babelLangToBCP47 :: T.Text -> Maybe Lang
213babelLangToBCP47 s =
216babelLangToBCP47 s =
214 case s of
217 case s of
215− "austrian" -> Just $ Lang "de" "" "AT" ["1901"]
218+ "austrian" -> Just $ Lang "de" Nothing (Just "AT") ["1901"] [] []
216− "naustrian" -> Just $ Lang "de" "" "AT" []
219+ "naustrian" -> Just $ Lang "de" Nothing (Just "AT") [] [] []
217− "swissgerman" -> Just $ Lang "de" "" "CH" ["1901"]
220+ "swissgerman" -> Just $ Lang "de" Nothing (Just "CH") ["1901"] [] []
218− "nswissgerman" -> Just $ Lang "de" "" "CH" []
221+ "nswissgerman" -> Just $ Lang "de" Nothing (Just "CH") [] [] []
219− "german" -> Just $ Lang "de" "" "DE" ["1901"]
222+ "german" -> Just $ Lang "de" Nothing (Just "DE") ["1901"] [] []
220− "ngerman" -> Just $ Lang "de" "" "DE" []
223+ "ngerman" -> Just $ Lang "de" Nothing (Just "DE") [] [] []
221− "lowersorbian" -> Just $ Lang "dsb" "" "" []
224+ "lowersorbian" -> Just $ Lang "dsb" Nothing Nothing [] [] []
222− "uppersorbian" -> Just $ Lang "hsb" "" "" []
225+ "uppersorbian" -> Just $ Lang "hsb" Nothing Nothing [] [] []
223− "polutonikogreek" -> Just $ Lang "el" "" "" ["polyton"]
226+ "polutonikogreek" -> Just $ Lang "el" Nothing Nothing ["polyton"] [] []
224− "slovene" -> Just $ Lang "sl" "" "" []
227+ "slovene" -> Just $ simpleLang "sl"
225− "australian" -> Just $ Lang "en" "" "AU" []
228+ "australian" -> Just $ Lang "en" Nothing (Just "AU") [] [] []
226− "canadian" -> Just $ Lang "en" "" "CA" []
229+ "canadian" -> Just $ Lang "en" Nothing (Just "CA") [] [] []
227− "british" -> Just $ Lang "en" "" "GB" []
230+ "british" -> Just $ Lang "en" Nothing (Just "GB") [] [] []
228− "newzealand" -> Just $ Lang "en" "" "NZ" []
231+ "newzealand" -> Just $ Lang "en" Nothing (Just "NZ") [] [] []
229− "american" -> Just $ Lang "en" "" "US" []
232+ "american" -> Just $ Lang "en" Nothing (Just "US") [] [] []
230− "classiclatin" -> Just $ Lang "la" "" "" ["x-classic"]
233+ "classiclatin" -> Just $ Lang "la" Nothing Nothing ["x-classic"] [] []
231 _ -> ($ "") <$> M.lookup s polyglossiaLangToBCP47
234 _ -> ($ "") <$> M.lookup s polyglossiaLangToBCP47