summaryrefslogtreecommitdiff
path: root/src/compiler/GF/Text/CP1254.hs
blob: 488359d70fc1654b4b4f22f559844f4a13ffcf3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
-----------------------------------------------------------------------------
-- |
-- Module      : GF.Text.CP1254
-- Maintainer  : Krasimir Angelov
--
-- cp1254 is a code page used under Microsoft Windows to write Turkish.
-- Characters with codepoints A0 through FF are compatible with ISO 8859-9.
--
-----------------------------------------------------------------------------

module GF.Text.CP1254 where

import Data.Char

decodeCP1254 = map convert where
  convert c
   | c == '\x80'                = chr 0x20AC
   | c == '\x82'                = chr 0x201A
   | c == '\x83'                = chr 0x192
   | c == '\x84'                = chr 0x201E
   | c == '\x85'                = chr 0x2026
   | c == '\x86'                = chr 0x2020
   | c == '\x87'                = chr 0x2021
   | c == '\x88'                = chr 0x2C6
   | c == '\x89'                = chr 0x2030
   | c == '\x8A'                = chr 0x160
   | c == '\x8B'                = chr 0x2039
   | c == '\x8C'                = chr 0x152
   | c == '\x91'                = chr 0x2018
   | c == '\x92'                = chr 0x2019
   | c == '\x93'                = chr 0x201C
   | c == '\x94'                = chr 0x201D
   | c == '\x95'                = chr 0x2022
   | c == '\x96'                = chr 0x2013
   | c == '\x97'                = chr 0x2014
   | c == '\x98'                = chr 0x2DC
   | c == '\x99'                = chr 0x2122
   | c == '\x9A'                = chr 0x161
   | c == '\x9B'                = chr 0x203A
   | c == '\x9C'                = chr 0x153
   | c == '\x9F'                = chr 0x178
   | c == '\xD0'                = chr 0x11E
   | c == '\xDD'                = chr 0x130
   | c == '\xDE'                = chr 0x15E
   | c == '\xF0'                = chr 0x11F
   | c == '\xFD'                = chr 0x131
   | c == '\xFE'                = chr 0x15F
   | otherwise                  = c

encodeCP1254 = map convert where
  convert c
   | oc == 0x20AC               = '\x80'
   | oc == 0x201A               = '\x82'
   | oc == 0x192                = '\x83'
   | oc == 0x201E               = '\x84'
   | oc == 0x2026               = '\x85'
   | oc == 0x2020               = '\x86'
   | oc == 0x2021               = '\x87'
   | oc == 0x2C6                = '\x88'
   | oc == 0x2030               = '\x89'
   | oc == 0x160                = '\x8A'
   | oc == 0x2039               = '\x8B'
   | oc == 0x152                = '\x8C'
   | oc == 0x2018               = '\x91'
   | oc == 0x2019               = '\x92'
   | oc == 0x201C               = '\x93'
   | oc == 0x201D               = '\x94'
   | oc == 0x2022               = '\x95'
   | oc == 0x2013               = '\x96'
   | oc == 0x2014               = '\x97'
   | oc == 0x2DC                = '\x98'
   | oc == 0x2122               = '\x99'
   | oc == 0x161                = '\x9A'
   | oc == 0x203A               = '\x9B'
   | oc == 0x153                = '\x9C'
   | oc == 0x178                = '\x9F'
   | oc == 0x11E                = '\xD0'
   | oc == 0x130                = '\xDD'
   | oc == 0x15E                = '\xDE'
   | oc == 0x11F                = '\xF0'
   | oc == 0x131                = '\xFD'
   | oc == 0x15F                = '\xFE'
   | otherwise                  = c
   where oc = ord c