Skip to content

Commit 48b64fd

Browse files
authored
Merge pull request #823 from tsoding/821
(#821) Fix Bot.Flip
2 parents 6fa1497 + 140190e commit 48b64fd

1 file changed

Lines changed: 72 additions & 62 deletions

File tree

src/Bot/Flip.hs

Lines changed: 72 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,82 @@
11
module Bot.Flip where
22

3+
import Control.Applicative
34
import qualified Data.Map as M
45
import Data.Maybe
56
import qualified Data.Text as T
7+
import Data.Tuple
68

79
-- https://github.com/doherty/Text-UpsideDown/blob/master/lib/Text/UpsideDown.pm
810
-- http://www.fileformat.info/convert/text/upside-down-map.htm
911
flipText :: T.Text -> T.Text
10-
flipText = T.map (\x -> fromMaybe x $ M.lookup x table) . T.reverse
12+
flipText =
13+
T.map (\x -> fromMaybe x (M.lookup x table1 <|> M.lookup x table2)) .
14+
T.reverse
1115

12-
table :: M.Map Char Char
13-
table =
14-
M.fromList
15-
[ ('\x0021', '\x00A1')
16-
, ('\x0022', '\x201E')
17-
, ('\x0026', '\x214B')
18-
, ('\x0027', '\x002C')
19-
, ('\x0028', '\x0029')
20-
, ('\x002E', '\x02D9')
21-
, ('\x0033', '\x0190')
22-
, ('\x0034', '\x152D')
23-
, ('\x0036', '\x0039')
24-
, ('\x0037', '\x2C62')
25-
, ('\x003B', '\x061B')
26-
, ('\x003C', '\x003E')
27-
, ('\x003F', '\x00BF')
28-
, ('\x0041', '\x2200')
29-
, ('\x0042', '\x10412')
30-
, ('\x0043', '\x2183')
31-
, ('\x0044', '\x25D6')
32-
, ('\x0045', '\x018E')
33-
, ('\x0046', '\x2132')
34-
, ('\x0047', '\x2141')
35-
, ('\x004A', '\x017F')
36-
, ('\x004B', '\x22CA')
37-
, ('\x004C', '\x2142')
38-
, ('\x004D', '\x0057')
39-
, ('\x004E', '\x1D0E')
40-
, ('\x0050', '\x0500')
41-
, ('\x0051', '\x038C')
42-
, ('\x0052', '\x1D1A')
43-
, ('\x0054', '\x22A5')
44-
, ('\x0055', '\x2229')
45-
, ('\x0056', '\x1D27')
46-
, ('\x0059', '\x2144')
47-
, ('\x005B', '\x005D')
48-
, ('\x005F', '\x203E')
49-
, ('\x0061', '\x0250')
50-
, ('\x0062', '\x0071')
51-
, ('\x0063', '\x0254')
52-
, ('\x0064', '\x0070')
53-
, ('\x0065', '\x01DD')
54-
, ('\x0066', '\x025F')
55-
, ('\x0067', '\x0183')
56-
, ('\x0068', '\x0265')
57-
, ('\x0069', '\x0131')
58-
, ('\x006A', '\x027E')
59-
, ('\x006B', '\x029E')
60-
, ('\x006C', '\x0283')
61-
, ('\x006D', '\x026F')
62-
, ('\x006E', '\x0075')
63-
, ('\x0072', '\x0279')
64-
, ('\x0074', '\x0287')
65-
, ('\x0076', '\x028C')
66-
, ('\x0077', '\x028D')
67-
, ('\x0079', '\x028E')
68-
, ('\x007B', '\x007D')
69-
, ('\x203F', '\x2040')
70-
, ('\x2045', '\x2046')
71-
, ('\x2234', '\x2235')
72-
]
16+
separateVariable :: [(Char, Char)]
17+
separateVariable =
18+
[ ('\x0021', '\x00A1')
19+
, ('\x0022', '\x201E')
20+
, ('\x0026', '\x214B')
21+
, ('\x0027', '\x002C')
22+
, ('\x0028', '\x0029')
23+
, ('\x002E', '\x02D9')
24+
, ('\x0033', '\x0190')
25+
, ('\x0034', '\x152D')
26+
, ('\x0036', '\x0039')
27+
, ('\x0037', '\x2C62')
28+
, ('\x003B', '\x061B')
29+
, ('\x003C', '\x003E')
30+
, ('\x003F', '\x00BF')
31+
, ('\x0041', '\x2200')
32+
, ('\x0042', '\x10412')
33+
, ('\x0043', '\x2183')
34+
, ('\x0044', '\x25D6')
35+
, ('\x0045', '\x018E')
36+
, ('\x0046', '\x2132')
37+
, ('\x0047', '\x2141')
38+
, ('\x004A', '\x017F')
39+
, ('\x004B', '\x22CA')
40+
, ('\x004C', '\x2142')
41+
, ('\x004D', '\x0057')
42+
, ('\x004E', '\x1D0E')
43+
, ('\x0050', '\x0500')
44+
, ('\x0051', '\x038C')
45+
, ('\x0052', '\x1D1A')
46+
, ('\x0054', '\x22A5')
47+
, ('\x0055', '\x2229')
48+
, ('\x0056', '\x1D27')
49+
, ('\x0059', '\x2144')
50+
, ('\x005B', '\x005D')
51+
, ('\x005F', '\x203E')
52+
, ('\x0061', '\x0250')
53+
, ('\x0062', '\x0071')
54+
, ('\x0063', '\x0254')
55+
, ('\x0064', '\x0070')
56+
, ('\x0065', '\x01DD')
57+
, ('\x0066', '\x025F')
58+
, ('\x0067', '\x0183')
59+
, ('\x0068', '\x0265')
60+
, ('\x0069', '\x0131')
61+
, ('\x006A', '\x027E')
62+
, ('\x006B', '\x029E')
63+
, ('\x006C', '\x0283')
64+
, ('\x006D', '\x026F')
65+
, ('\x006E', '\x0075')
66+
, ('\x0072', '\x0279')
67+
, ('\x0074', '\x0287')
68+
, ('\x0076', '\x028C')
69+
, ('\x0077', '\x028D')
70+
, ('\x0079', '\x028E')
71+
, ('\x007B', '\x007D')
72+
, ('\x203F', '\x2040')
73+
, ('\x2045', '\x2046')
74+
, ('\x2234', '\x2235')
75+
, ('', '')
76+
]
77+
78+
table1 :: M.Map Char Char
79+
table1 = M.fromList separateVariable
80+
81+
table2 :: M.Map Char Char
82+
table2 = M.fromList $ map swap separateVariable

0 commit comments

Comments
 (0)