File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11module Bot.Flip where
22
3+ import Control.Applicative
34import qualified Data.Map as M
45import Data.Maybe
56import 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
911flipText :: 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
You can’t perform that action at this time.
0 commit comments