-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathleet.go
100 lines (92 loc) · 1.66 KB
/
leet.go
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package gostringconverters
import (
"strings"
)
var (
basicToLeetMap = map[rune]rune{
'a': '4',
'e': '3',
'g': '6',
'i': '1',
'o': '0',
's': '5',
't': '7',
}
basicFromLeetMap = map[rune]rune{
'4': 'a',
'3': 'e',
'6': 'g',
'1': 'i',
'0': 'o',
'5': 's',
'7': 't',
}
advancedToLeetMap = map[rune]string{
'a': "4",
'b': "|3",
'c': "(",
'd': "|)",
'e': "3",
'f': "|=",
'g': "9",
'h': "|-|",
'i': "!",
'j': "_|",
'k': "|<",
'l': "|_",
'm': "/\\/\\",
'n': "|\\|",
'o': "0",
'p': "|D",
'q': "q",
'r': "|2",
's': "5",
't': "7",
'u': "(_)",
'v': "\\/",
'w': "\\/\\/",
'x': "><",
'y': "`/",
'z': "2",
}
advancedFromLeetMap = map[string]rune{
"4": 'a',
"|3": 'b',
"(": 'c',
"|)": 'd',
"3": 'e',
"|=": 'f',
"9": 'g',
"|-|": 'h',
"!": 'i',
"_|": 'j',
"|<": 'k',
"|_": 'l',
"/\\/\\": 'm',
"|\\|": 'n',
"0": 'o',
"|D": 'p',
"q": 'q',
"|2": 'r',
"5": 's',
"7": 't',
"(_)": 'u',
"\\/": 'v',
"\\/\\/": 'w',
"><": 'x',
"`/": 'y',
"2": 'z',
}
)
// ToLeetBasic - converts a string to Leet using basic Leet values
func ToLeetBasic(s string) string {
return strings.Map(RuneMapToMapFunc(basicToLeetMap, false), s)
}
// FromLeetBasic - converts a string from Leet using basic Leet values
func FromLeetBasic(s string) string {
return strings.Map(RuneMapToMapFunc(basicFromLeetMap, false), s)
}
// ToLeetAdvanced - converts a string to Leet using advanced Leet values
func ToLeetAdvanced(s string) string {
return RuneMapToStringConversion(s, advancedToLeetMap, false)
}