-- |
-- Module      :  Text.Inflections.Data
-- Copyright   :  © 2016 Justin Leitgeb
-- License     :  MIT
--
-- Maintainer  :  Justin Leitgeb <justin@stackbuilders.com>
-- Stability   :  experimental
-- Portability :  portable
--
-- Auxiliary data used in the library.

module Text.Inflections.Data
  ( Transliterations
  , defaultTransliterations )
where

import Data.HashMap.Strict (HashMap)
import qualified Data.HashMap.Strict as M

-- | A 'HashMap' containing mappings from international characters to
-- sequences approximating these characters within the ASCII range.
type Transliterations = HashMap Char String

-- | These default transliterations are stolen from the Ruby i18n library -
-- see
-- <https://github.com/svenfuchs/i18n/blob/master/lib/i18n/backend/transliterator.rb#L41:L69>.
--
-- NOTE: before version 0.3.0.0 this was called @defaultMap@.
defaultTransliterations :: Transliterations
defaultTransliterations :: Transliterations
defaultTransliterations = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
M.fromList [
  (Char
'À', String
"A"), (Char
'Á', String
"A"), (Char
'Â', String
"A"), (Char
'Ã', String
"A"), (Char
'Ä', String
"A"), (Char
'Å', String
"A"),
  (Char
'Æ', String
"AE"), (Char
'Ç', String
"C"), (Char
'È', String
"E"), (Char
'É', String
"E"), (Char
'Ê', String
"E"), (Char
'Ë', String
"E"),
  (Char
'Ì', String
"I"), (Char
'Í', String
"I"), (Char
'Î', String
"I"), (Char
'Ï', String
"I"), (Char
'Ð', String
"D"), (Char
'Ñ', String
"N"),
  (Char
'Ò', String
"O"), (Char
'Ó', String
"O"), (Char
'Ô', String
"O"), (Char
'Õ', String
"O"), (Char
'Ö', String
"O"), (Char
'×', String
"x"),
  (Char
'Ø', String
"O"), (Char
'Ù', String
"U"), (Char
'Ú', String
"U"), (Char
'Û', String
"U"), (Char
'Ü', String
"U"), (Char
'Ý', String
"Y"),
  (Char
'Þ', String
"Th"), (Char
'ß', String
"ss"), (Char
'à', String
"a"), (Char
'á', String
"a"), (Char
'â', String
"a"), (Char
'ã', String
"a"),
  (Char
'ä', String
"a"), (Char
'å', String
"a"), (Char
'æ', String
"ae"), (Char
'ç', String
"c"), (Char
'è', String
"e"), (Char
'é', String
"e"),
  (Char
'ê', String
"e"), (Char
'ë', String
"e"), (Char
'ì', String
"i"), (Char
'í', String
"i"), (Char
'î', String
"i"), (Char
'ï', String
"i"),
  (Char
'ð', String
"d"), (Char
'ñ', String
"n"), (Char
'ò', String
"o"), (Char
'ó', String
"o"), (Char
'ô', String
"o"), (Char
'õ', String
"o"),
  (Char
'ö', String
"o"), (Char
'ø', String
"o"), (Char
'ù', String
"u"), (Char
'ú', String
"u"), (Char
'û', String
"u"), (Char
'ü', String
"u"),
  (Char
'ý', String
"y"), (Char
'þ', String
"th"), (Char
'ÿ', String
"y"), (Char
'Ā', String
"A"), (Char
'ā', String
"a"), (Char
'Ă', String
"A"),
  (Char
'ă', String
"a"), (Char
'Ą', String
"A"), (Char
'ą', String
"a"), (Char
'Ć', String
"C"), (Char
'ć', String
"c"), (Char
'Ĉ', String
"C"),
  (Char
'ĉ', String
"c"), (Char
'Ċ', String
"C"), (Char
'ċ', String
"c"), (Char
'Č', String
"C"), (Char
'č', String
"c"), (Char
'Ď', String
"D"),
  (Char
'ď', String
"d"), (Char
'Đ', String
"D"), (Char
'đ', String
"d"), (Char
'Ē', String
"E"), (Char
'ē', String
"e"), (Char
'Ĕ', String
"E"),
  (Char
'ĕ', String
"e"), (Char
'Ė', String
"E"), (Char
'ė', String
"e"), (Char
'Ę', String
"E"), (Char
'ę', String
"e"), (Char
'Ě', String
"E"),
  (Char
'ě', String
"e"), (Char
'Ĝ', String
"G"), (Char
'ĝ', String
"g"), (Char
'Ğ', String
"G"), (Char
'ğ', String
"g"), (Char
'Ġ', String
"G"),
  (Char
'ġ', String
"g"), (Char
'Ģ', String
"G"), (Char
'ģ', String
"g"), (Char
'Ĥ', String
"H"), (Char
'ĥ', String
"h"), (Char
'Ħ', String
"H"),
  (Char
'ħ', String
"h"), (Char
'Ĩ', String
"I"), (Char
'ĩ', String
"i"), (Char
'Ī', String
"I"), (Char
'ī', String
"i"), (Char
'Ĭ', String
"I"),
  (Char
'ĭ', String
"i"), (Char
'Į', String
"I"), (Char
'į', String
"i"), (Char
'İ', String
"I"), (Char
'ı', String
"i"), (Char
'IJ', String
"IJ"),
  (Char
'ij', String
"ij"), (Char
'Ĵ', String
"J"), (Char
'ĵ', String
"j"), (Char
'Ķ', String
"K"), (Char
'ķ', String
"k"), (Char
'ĸ', String
"k"),
  (Char
'Ĺ', String
"L"), (Char
'ĺ', String
"l"), (Char
'Ļ', String
"L"), (Char
'ļ', String
"l"), (Char
'Ľ', String
"L"), (Char
'ľ', String
"l"),
  (Char
'Ŀ', String
"L"), (Char
'ŀ', String
"l"), (Char
'Ł', String
"L"), (Char
'ł', String
"l"), (Char
'Ń', String
"N"), (Char
'ń', String
"n"),
  (Char
'Ņ', String
"N"), (Char
'ņ', String
"n"), (Char
'Ň', String
"N"), (Char
'ň', String
"n"), (Char
'ʼn', String
"'n"), (Char
'Ŋ', String
"NG"),
  (Char
'ŋ', String
"ng"), (Char
'Ō', String
"O"), (Char
'ō', String
"o"), (Char
'Ŏ', String
"O"), (Char
'ŏ', String
"o"), (Char
'Ő', String
"O"),
  (Char
'ő', String
"o"), (Char
'Œ', String
"OE"), (Char
'œ', String
"oe"), (Char
'Ŕ', String
"R"), (Char
'ŕ', String
"r"), (Char
'Ŗ', String
"R"),
  (Char
'ŗ', String
"r"), (Char
'Ř', String
"R"), (Char
'ř', String
"r"), (Char
'Ś', String
"S"), (Char
'ś', String
"s"), (Char
'Ŝ', String
"S"),
  (Char
'ŝ', String
"s"), (Char
'Ş', String
"S"), (Char
'ş', String
"s"), (Char
'Š', String
"S"), (Char
'š', String
"s"), (Char
'Ţ', String
"T"),
  (Char
'ţ', String
"t"), (Char
'Ť', String
"T"), (Char
'ť', String
"t"), (Char
'Ŧ', String
"T"), (Char
'ŧ', String
"t"), (Char
'Ũ', String
"U"),
  (Char
'ũ', String
"u"), (Char
'Ū', String
"U"), (Char
'ū', String
"u"), (Char
'Ŭ', String
"U"), (Char
'ŭ', String
"u"), (Char
'Ů', String
"U"),
  (Char
'ů', String
"u"), (Char
'Ű', String
"U"), (Char
'ű', String
"u"), (Char
'Ų', String
"U"), (Char
'ų', String
"u"), (Char
'Ŵ', String
"W"),
  (Char
'ŵ', String
"w"), (Char
'Ŷ', String
"Y"), (Char
'ŷ', String
"y"), (Char
'Ÿ', String
"Y"), (Char
'Ź', String
"Z"), (Char
'ź', String
"z"),
  (Char
'Ż', String
"Z"), (Char
'ż', String
"z"), (Char
'Ž', String
"Z"), (Char
'ž', String
"z")]