{- |
   Module      : Text.Pandoc.Asciify
   Copyright   : Copyright (C) 2013-2021 John MacFarlane
   License     : GNU GPL, version 2 or above

   Maintainer  : John MacFarlane <jgm@berkeley.edu>
   Stability   : alpha
   Portability : portable

Function to convert accented latin letters to their unaccented
ascii equivalents (used in constructing HTML identifiers).
-}
module Text.Pandoc.Asciify (toAsciiChar)
where
import Data.Char (isAscii)
import qualified Data.Map as M

toAsciiChar :: Char -> Maybe Char
toAsciiChar :: Char -> Maybe Char
toAsciiChar Char
c | Char -> Bool
isAscii Char
c = Char -> Maybe Char
forall a. a -> Maybe a
Just Char
c
              | Bool
otherwise = Char -> Map Char Char -> Maybe Char
forall k a. Ord k => k -> Map k a -> Maybe a
M.lookup Char
c Map Char Char
asciiMap

asciiMap :: M.Map Char Char
asciiMap :: Map Char Char
asciiMap = [(Char, Char)] -> Map Char Char
forall k a. Ord k => [(k, a)] -> Map k a
M.fromList
  [(Char
'\192',Char
'A')
  ,(Char
'\193',Char
'A')
  ,(Char
'\194',Char
'A')
  ,(Char
'\195',Char
'A')
  ,(Char
'\196',Char
'A')
  ,(Char
'\197',Char
'A')
  ,(Char
'\199',Char
'C')
  ,(Char
'\200',Char
'E')
  ,(Char
'\201',Char
'E')
  ,(Char
'\202',Char
'E')
  ,(Char
'\203',Char
'E')
  ,(Char
'\204',Char
'I')
  ,(Char
'\205',Char
'I')
  ,(Char
'\206',Char
'I')
  ,(Char
'\207',Char
'I')
  ,(Char
'\209',Char
'N')
  ,(Char
'\210',Char
'O')
  ,(Char
'\211',Char
'O')
  ,(Char
'\212',Char
'O')
  ,(Char
'\213',Char
'O')
  ,(Char
'\214',Char
'O')
  ,(Char
'\217',Char
'U')
  ,(Char
'\218',Char
'U')
  ,(Char
'\219',Char
'U')
  ,(Char
'\220',Char
'U')
  ,(Char
'\221',Char
'Y')
  ,(Char
'\224',Char
'a')
  ,(Char
'\225',Char
'a')
  ,(Char
'\226',Char
'a')
  ,(Char
'\227',Char
'a')
  ,(Char
'\228',Char
'a')
  ,(Char
'\229',Char
'a')
  ,(Char
'\231',Char
'c')
  ,(Char
'\232',Char
'e')
  ,(Char
'\233',Char
'e')
  ,(Char
'\234',Char
'e')
  ,(Char
'\235',Char
'e')
  ,(Char
'\236',Char
'i')
  ,(Char
'\237',Char
'i')
  ,(Char
'\238',Char
'i')
  ,(Char
'\239',Char
'i')
  ,(Char
'\241',Char
'n')
  ,(Char
'\242',Char
'o')
  ,(Char
'\243',Char
'o')
  ,(Char
'\244',Char
'o')
  ,(Char
'\245',Char
'o')
  ,(Char
'\246',Char
'o')
  ,(Char
'\249',Char
'u')
  ,(Char
'\250',Char
'u')
  ,(Char
'\251',Char
'u')
  ,(Char
'\252',Char
'u')
  ,(Char
'\253',Char
'y')
  ,(Char
'\255',Char
'y')
  ,(Char
'\256',Char
'A')
  ,(Char
'\257',Char
'a')
  ,(Char
'\258',Char
'A')
  ,(Char
'\259',Char
'a')
  ,(Char
'\260',Char
'A')
  ,(Char
'\261',Char
'a')
  ,(Char
'\262',Char
'C')
  ,(Char
'\263',Char
'c')
  ,(Char
'\264',Char
'C')
  ,(Char
'\265',Char
'c')
  ,(Char
'\266',Char
'C')
  ,(Char
'\267',Char
'c')
  ,(Char
'\268',Char
'C')
  ,(Char
'\269',Char
'c')
  ,(Char
'\270',Char
'D')
  ,(Char
'\271',Char
'd')
  ,(Char
'\274',Char
'E')
  ,(Char
'\275',Char
'e')
  ,(Char
'\276',Char
'E')
  ,(Char
'\277',Char
'e')
  ,(Char
'\278',Char
'E')
  ,(Char
'\279',Char
'e')
  ,(Char
'\280',Char
'E')
  ,(Char
'\281',Char
'e')
  ,(Char
'\282',Char
'E')
  ,(Char
'\283',Char
'e')
  ,(Char
'\284',Char
'G')
  ,(Char
'\285',Char
'g')
  ,(Char
'\286',Char
'G')
  ,(Char
'\287',Char
'g')
  ,(Char
'\288',Char
'G')
  ,(Char
'\289',Char
'g')
  ,(Char
'\290',Char
'G')
  ,(Char
'\291',Char
'g')
  ,(Char
'\292',Char
'H')
  ,(Char
'\293',Char
'h')
  ,(Char
'\296',Char
'I')
  ,(Char
'\297',Char
'i')
  ,(Char
'\298',Char
'I')
  ,(Char
'\299',Char
'i')
  ,(Char
'\300',Char
'I')
  ,(Char
'\301',Char
'i')
  ,(Char
'\302',Char
'I')
  ,(Char
'\303',Char
'i')
  ,(Char
'\304',Char
'I')
  ,(Char
'\305',Char
'i')
  ,(Char
'\308',Char
'J')
  ,(Char
'\309',Char
'j')
  ,(Char
'\310',Char
'K')
  ,(Char
'\311',Char
'k')
  ,(Char
'\313',Char
'L')
  ,(Char
'\314',Char
'l')
  ,(Char
'\315',Char
'L')
  ,(Char
'\316',Char
'l')
  ,(Char
'\317',Char
'L')
  ,(Char
'\318',Char
'l')
  ,(Char
'\323',Char
'N')
  ,(Char
'\324',Char
'n')
  ,(Char
'\325',Char
'N')
  ,(Char
'\326',Char
'n')
  ,(Char
'\327',Char
'N')
  ,(Char
'\328',Char
'n')
  ,(Char
'\332',Char
'O')
  ,(Char
'\333',Char
'o')
  ,(Char
'\334',Char
'O')
  ,(Char
'\335',Char
'o')
  ,(Char
'\336',Char
'O')
  ,(Char
'\337',Char
'o')
  ,(Char
'\340',Char
'R')
  ,(Char
'\341',Char
'r')
  ,(Char
'\342',Char
'R')
  ,(Char
'\343',Char
'r')
  ,(Char
'\344',Char
'R')
  ,(Char
'\345',Char
'r')
  ,(Char
'\346',Char
'S')
  ,(Char
'\347',Char
's')
  ,(Char
'\348',Char
'S')
  ,(Char
'\349',Char
's')
  ,(Char
'\350',Char
'S')
  ,(Char
'\351',Char
's')
  ,(Char
'\352',Char
'S')
  ,(Char
'\353',Char
's')
  ,(Char
'\354',Char
'T')
  ,(Char
'\355',Char
't')
  ,(Char
'\356',Char
'T')
  ,(Char
'\357',Char
't')
  ,(Char
'\360',Char
'U')
  ,(Char
'\361',Char
'u')
  ,(Char
'\362',Char
'U')
  ,(Char
'\363',Char
'u')
  ,(Char
'\364',Char
'U')
  ,(Char
'\365',Char
'u')
  ,(Char
'\366',Char
'U')
  ,(Char
'\367',Char
'u')
  ,(Char
'\368',Char
'U')
  ,(Char
'\369',Char
'u')
  ,(Char
'\370',Char
'U')
  ,(Char
'\371',Char
'u')
  ,(Char
'\372',Char
'W')
  ,(Char
'\373',Char
'w')
  ,(Char
'\374',Char
'Y')
  ,(Char
'\375',Char
'y')
  ,(Char
'\376',Char
'Y')
  ,(Char
'\377',Char
'Z')
  ,(Char
'\378',Char
'z')
  ,(Char
'\379',Char
'Z')
  ,(Char
'\380',Char
'z')
  ,(Char
'\381',Char
'Z')
  ,(Char
'\382',Char
'z')
  ,(Char
'\416',Char
'O')
  ,(Char
'\417',Char
'o')
  ,(Char
'\431',Char
'U')
  ,(Char
'\432',Char
'u')
  ,(Char
'\461',Char
'A')
  ,(Char
'\462',Char
'a')
  ,(Char
'\463',Char
'I')
  ,(Char
'\464',Char
'i')
  ,(Char
'\465',Char
'O')
  ,(Char
'\466',Char
'o')
  ,(Char
'\467',Char
'U')
  ,(Char
'\468',Char
'u')
  ,(Char
'\486',Char
'G')
  ,(Char
'\487',Char
'g')
  ,(Char
'\488',Char
'K')
  ,(Char
'\489',Char
'k')
  ,(Char
'\490',Char
'O')
  ,(Char
'\491',Char
'o')
  ,(Char
'\496',Char
'j')
  ,(Char
'\500',Char
'G')
  ,(Char
'\501',Char
'g')
  ,(Char
'\504',Char
'N')
  ,(Char
'\505',Char
'n')
  ,(Char
'\512',Char
'A')
  ,(Char
'\513',Char
'a')
  ,(Char
'\514',Char
'A')
  ,(Char
'\515',Char
'a')
  ,(Char
'\516',Char
'E')
  ,(Char
'\517',Char
'e')
  ,(Char
'\518',Char
'E')
  ,(Char
'\519',Char
'e')
  ,(Char
'\520',Char
'I')
  ,(Char
'\521',Char
'i')
  ,(Char
'\522',Char
'I')
  ,(Char
'\523',Char
'i')
  ,(Char
'\524',Char
'O')
  ,(Char
'\525',Char
'o')
  ,(Char
'\526',Char
'O')
  ,(Char
'\527',Char
'o')
  ,(Char
'\528',Char
'R')
  ,(Char
'\529',Char
'r')
  ,(Char
'\530',Char
'R')
  ,(Char
'\531',Char
'r')
  ,(Char
'\532',Char
'U')
  ,(Char
'\533',Char
'u')
  ,(Char
'\534',Char
'U')
  ,(Char
'\535',Char
'u')
  ,(Char
'\536',Char
'S')
  ,(Char
'\537',Char
's')
  ,(Char
'\538',Char
'T')
  ,(Char
'\539',Char
't')
  ,(Char
'\542',Char
'H')
  ,(Char
'\543',Char
'h')
  ,(Char
'\550',Char
'A')
  ,(Char
'\551',Char
'a')
  ,(Char
'\552',Char
'E')
  ,(Char
'\553',Char
'e')
  ,(Char
'\558',Char
'O')
  ,(Char
'\559',Char
'o')
  ,(Char
'\562',Char
'Y')
  ,(Char
'\563',Char
'y')
  ,(Char
'\894',Char
';')
  ,(Char
'\7680',Char
'A')
  ,(Char
'\7681',Char
'a')
  ,(Char
'\7682',Char
'B')
  ,(Char
'\7683',Char
'b')
  ,(Char
'\7684',Char
'B')
  ,(Char
'\7685',Char
'b')
  ,(Char
'\7686',Char
'B')
  ,(Char
'\7687',Char
'b')
  ,(Char
'\7690',Char
'D')
  ,(Char
'\7691',Char
'd')
  ,(Char
'\7692',Char
'D')
  ,(Char
'\7693',Char
'd')
  ,(Char
'\7694',Char
'D')
  ,(Char
'\7695',Char
'd')
  ,(Char
'\7696',Char
'D')
  ,(Char
'\7697',Char
'd')
  ,(Char
'\7698',Char
'D')
  ,(Char
'\7699',Char
'd')
  ,(Char
'\7704',Char
'E')
  ,(Char
'\7705',Char
'e')
  ,(Char
'\7706',Char
'E')
  ,(Char
'\7707',Char
'e')
  ,(Char
'\7710',Char
'F')
  ,(Char
'\7711',Char
'f')
  ,(Char
'\7712',Char
'G')
  ,(Char
'\7713',Char
'g')
  ,(Char
'\7714',Char
'H')
  ,(Char
'\7715',Char
'h')
  ,(Char
'\7716',Char
'H')
  ,(Char
'\7717',Char
'h')
  ,(Char
'\7718',Char
'H')
  ,(Char
'\7719',Char
'h')
  ,(Char
'\7720',Char
'H')
  ,(Char
'\7721',Char
'h')
  ,(Char
'\7722',Char
'H')
  ,(Char
'\7723',Char
'h')
  ,(Char
'\7724',Char
'I')
  ,(Char
'\7725',Char
'i')
  ,(Char
'\7728',Char
'K')
  ,(Char
'\7729',Char
'k')
  ,(Char
'\7730',Char
'K')
  ,(Char
'\7731',Char
'k')
  ,(Char
'\7732',Char
'K')
  ,(Char
'\7733',Char
'k')
  ,(Char
'\7734',Char
'L')
  ,(Char
'\7735',Char
'l')
  ,(Char
'\7738',Char
'L')
  ,(Char
'\7739',Char
'l')
  ,(Char
'\7740',Char
'L')
  ,(Char
'\7741',Char
'l')
  ,(Char
'\7742',Char
'M')
  ,(Char
'\7743',Char
'm')
  ,(Char
'\7744',Char
'M')
  ,(Char
'\7745',Char
'm')
  ,(Char
'\7746',Char
'M')
  ,(Char
'\7747',Char
'm')
  ,(Char
'\7748',Char
'N')
  ,(Char
'\7749',Char
'n')
  ,(Char
'\7750',Char
'N')
  ,(Char
'\7751',Char
'n')
  ,(Char
'\7752',Char
'N')
  ,(Char
'\7753',Char
'n')
  ,(Char
'\7754',Char
'N')
  ,(Char
'\7755',Char
'n')
  ,(Char
'\7764',Char
'P')
  ,(Char
'\7765',Char
'p')
  ,(Char
'\7766',Char
'P')
  ,(Char
'\7767',Char
'p')
  ,(Char
'\7768',Char
'R')
  ,(Char
'\7769',Char
'r')
  ,(Char
'\7770',Char
'R')
  ,(Char
'\7771',Char
'r')
  ,(Char
'\7774',Char
'R')
  ,(Char
'\7775',Char
'r')
  ,(Char
'\7776',Char
'S')
  ,(Char
'\7777',Char
's')
  ,(Char
'\7778',Char
'S')
  ,(Char
'\7779',Char
's')
  ,(Char
'\7786',Char
'T')
  ,(Char
'\7787',Char
't')
  ,(Char
'\7788',Char
'T')
  ,(Char
'\7789',Char
't')
  ,(Char
'\7790',Char
'T')
  ,(Char
'\7791',Char
't')
  ,(Char
'\7792',Char
'T')
  ,(Char
'\7793',Char
't')
  ,(Char
'\7794',Char
'U')
  ,(Char
'\7795',Char
'u')
  ,(Char
'\7796',Char
'U')
  ,(Char
'\7797',Char
'u')
  ,(Char
'\7798',Char
'U')
  ,(Char
'\7799',Char
'u')
  ,(Char
'\7804',Char
'V')
  ,(Char
'\7805',Char
'v')
  ,(Char
'\7806',Char
'V')
  ,(Char
'\7807',Char
'v')
  ,(Char
'\7808',Char
'W')
  ,(Char
'\7809',Char
'w')
  ,(Char
'\7810',Char
'W')
  ,(Char
'\7811',Char
'w')
  ,(Char
'\7812',Char
'W')
  ,(Char
'\7813',Char
'w')
  ,(Char
'\7814',Char
'W')
  ,(Char
'\7815',Char
'w')
  ,(Char
'\7816',Char
'W')
  ,(Char
'\7817',Char
'w')
  ,(Char
'\7818',Char
'X')
  ,(Char
'\7819',Char
'x')
  ,(Char
'\7820',Char
'X')
  ,(Char
'\7821',Char
'x')
  ,(Char
'\7822',Char
'Y')
  ,(Char
'\7823',Char
'y')
  ,(Char
'\7824',Char
'Z')
  ,(Char
'\7825',Char
'z')
  ,(Char
'\7826',Char
'Z')
  ,(Char
'\7827',Char
'z')
  ,(Char
'\7828',Char
'Z')
  ,(Char
'\7829',Char
'z')
  ,(Char
'\7830',Char
'h')
  ,(Char
'\7831',Char
't')
  ,(Char
'\7832',Char
'w')
  ,(Char
'\7833',Char
'y')
  ,(Char
'\7840',Char
'A')
  ,(Char
'\7841',Char
'a')
  ,(Char
'\7842',Char
'A')
  ,(Char
'\7843',Char
'a')
  ,(Char
'\7864',Char
'E')
  ,(Char
'\7865',Char
'e')
  ,(Char
'\7866',Char
'E')
  ,(Char
'\7867',Char
'e')
  ,(Char
'\7868',Char
'E')
  ,(Char
'\7869',Char
'e')
  ,(Char
'\7880',Char
'I')
  ,(Char
'\7881',Char
'i')
  ,(Char
'\7882',Char
'I')
  ,(Char
'\7883',Char
'i')
  ,(Char
'\7884',Char
'O')
  ,(Char
'\7885',Char
'o')
  ,(Char
'\7886',Char
'O')
  ,(Char
'\7887',Char
'o')
  ,(Char
'\7908',Char
'U')
  ,(Char
'\7909',Char
'u')
  ,(Char
'\7910',Char
'U')
  ,(Char
'\7911',Char
'u')
  ,(Char
'\7922',Char
'Y')
  ,(Char
'\7923',Char
'y')
  ,(Char
'\7924',Char
'Y')
  ,(Char
'\7925',Char
'y')
  ,(Char
'\7926',Char
'Y')
  ,(Char
'\7927',Char
'y')
  ,(Char
'\7928',Char
'Y')
  ,(Char
'\7929',Char
'y')
  ,(Char
'\8175',Char
'`')
  ,(Char
'\8490',Char
'K')
  ,(Char
'\8800',Char
'=')
  ,(Char
'\8814',Char
'<')
  ,(Char
'\8815',Char
'>')
  ]