{-# LANGUAGE OverloadedStrings #-}

module Pdf.Toolbox.Content.Encoding.MacRoman
(
  encoding
)
where

import Data.Word
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Text (Text)

encoding :: Map Word8 Text
encoding = Map.fromList $ zip codes chars

chars :: [Text]
chars = [
  "A",
  "Æ",
  "Á",
  "Â",
  "Ä",
  "À",
  "Å",
  "Ã",
  "B",
  "C",
  "Ç",
  "D",
  "E",
  "É",
  "Ê",
  "Ë",
  "È",
  "F",
  "G",
  "H",
  "I",
  "Í",
  "Î",
  "Ï",
  "Ì",
  "J",
  "K",
  "L",
  "M",
  "N",
  "Ñ",
  "O",
  "Œ",
  "Ó",
  "Ô",
  "Ö",
  "Ò",
  "Ø",
  "Õ",
  "P",
  "Q",
  "R",
  "S",
  "T",
  "U",
  "Ú",
  "Û",
  "Ü",
  "Ù",
  "V",
  "W",
  "X",
  "Y",
  "Ÿ",
  "Z",
  "a",
  "á",
  "â",
  "´",
  "ä",
  "æ",
  "à",
  "&",
  "å",
  "^",
  "~",
  "*",
  "@",
  "ã",
  "b",
  "\\",
  "|",
  "{",
  "}",
  "[",
  "]",
  "˘",
  "•",
  "c",
  "ˇ",
  "ç",
  " ̧",
  "¢",
  "ˆ",
  ":",
  ",",
  "©",
  "¤",
  "d",
  "†",
  "‡",
  "°",
  "¨",
  "÷",
  "$",
  "˙",
  "ı",
  "e",
  "é",
  "ê",
  "ë",
  "è",
  "8",
  "…",
  "—",
  "–",
  "=",
  "!",
  "¡",
  "f",
  "fi",
  "5",
  "fl",
  "ƒ",
  "4",
  "⁄",
  "g",
  "ß",
  "`",
  ">",
  "«",
  "»",
  "‹",
  "›",
  "h",
  "˝",
  "-",
  "i",
  "í",
  "î",
  "ï",
  "ì",
  "j",
  "k",
  "l",
  "<",
  "¬",
  "m",
  " ̄",
  "μ",
  "n",
  "9",
  "ñ",
  "#",
  "o",
  "ó",
  "ô",
  "ö",
  "œ",
  "˛",
  "ò",
  "1",
  "ª",
  "º",
  "ø",
  "õ",
  "p",
  "¶",
  "(",
  ")",
  "%",
  ".",
  "·",
  "‰",
  "+",
  "±",
  "q",
  "?",
  "¿",
  "\"",
  "„",
  "“",
  "”",
  "‘",
  "’",
  "‚",
  "'",
  "r",
  "®",
  "∘",
  "s",
  "§",
  ";",
  "7",
  "6",
  "/",
  " ",
  "£",
  "t",
  "3",
  "~",
  "™",
  "2",
  "u",
  "ú",
  "û",
  "ü",
  "ù",
  "_",
  "v",
  "w",
  "x",
  "y",
  "ÿ",
  "¥",
  "z",
  "0"
  ]

codes :: [Word8]
codes = [
  0o101,
  0o256,
  0o347,
  0o345,
  0o200,
  0o313,
  0o201,
  0o314,
  0o102,
  0o103,
  0o202,
  0o104,
  0o105,
  0o203,
  0o346,
  0o350,
  0o351,
  0o106,
  0o107,
  0o110,
  0o111,
  0o352,
  0o353,
  0o354,
  0o355,
  0o112,
  0o113,
  0o114,
  0o115,
  0o116,
  0o204,
  0o117,
  0o316,
  0o356,
  0o357,
  0o205,
  0o361,
  0o257,
  0o315,
  0o120,
  0o121,
  0o122,
  0o123,
  0o124,
  0o125,
  0o362,
  0o363,
  0o206,
  0o364,
  0o126,
  0o127,
  0o130,
  0o131,
  0o331,
  0o132,
  0o141,
  0o207,
  0o211,
  0o253,
  0o212,
  0o276,
  0o210,
  0o046,
  0o214,
  0o136,
  0o176,
  0o052,
  0o100,
  0o213,
  0o142,
  0o134,
  0o174,
  0o173,
  0o175,
  0o133,
  0o135,
  0o371,
  0o245,
  0o143,
  0o377,
  0o215,
  0o374,
  0o242,
  0o366,
  0o072,
  0o054,
  0o251,
  0o333,
  0o144,
  0o240,
  0o340,
  0o241,
  0o254,
  0o326,
  0o044,
  0o372,
  0o365,
  0o145,
  0o216,
  0o220,
  0o221,
  0o217,
  0o070,
  0o311,
  0o321,
  0o320,
  0o075,
  0o041,
  0o301,
  0o146,
  0o336,
  0o065,
  0o337,
  0o304,
  0o064,
  0o332,
  0o147,
  0o247,
  0o140,
  0o076,
  0o307,
  0o310,
  0o334,
  0o335,
  0o150,
  0o375,
  0o055,
  0o151,
  0o222,
  0o224,
  0o225,
  0o223,
  0o152,
  0o153,
  0o154,
  0o074,
  0o302,
  0o155,
  0o370,
  0o265,
  0o156,
  0o071,
  0o226,
  0o043,
  0o157,
  0o227,
  0o231,
  0o232,
  0o317,
  0o376,
  0o230,
  0o061,
  0o273,
  0o274,
  0o277,
  0o233,
  0o160,
  0o246,
  0o050,
  0o051,
  0o045,
  0o056,
  0o341,
  0o344,
  0o053,
  0o261,
  0o161,
  0o077,
  0o300,
  0o042,
  0o343,
  0o322,
  0o323,
  0o324,
  0o325,
  0o342,
  0o047,
  0o162,
  0o250,
  0o373,
  0o163,
  0o244,
  0o073,
  0o067,
  0o066,
  0o057,
  0o040,
  0o243,
  0o164,
  0o063,
  0o367,
  0o252,
  0o062,
  0o165,
  0o234,
  0o236,
  0o237,
  0o235,
  0o137,
  0o166,
  0o167,
  0o170,
  0o171,
  0o330,
  0o264,
  0o172,
  0o060
  ]