-
Notifications
You must be signed in to change notification settings - Fork 0
/
titus.js
122 lines (109 loc) · 3.35 KB
/
titus.js
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
(function (exports) {
var characters = {
encode: {
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: '⁡⁢⁡',
' ': '⁡⁢⁢'
},
decode: {
'828882888288': 'a',
'828882888289': 'b',
'828882888290': 'c',
'828882888291': 'd',
'828882898288': 'e',
'828882898289': 'f',
'828882898290': 'g',
'828882898291': 'h',
'828882908288': 'i',
'828882908289': 'j',
'828882908290': 'k',
'828882908291': 'l',
'828882918288': 'm',
'828882918289': 'n',
'828882918290': 'o',
'828882918291': 'p',
'828982888288': 'q',
'828982888289': 'r',
'828982888290': 's',
'828982888291': 't',
'828982898288': 'u',
'828982898289': 'v',
'828982898290': 'w',
'828982898291': 'x',
'828982908288': 'y',
'828982908289': 'z',
'828982908290': ' '
}
}
exports.encode = function (opts) {
var result = ''
if (opts.text.length > 1) {
var replaceAll = function (text) {
text.replace(/ /g, characters.encode[' '])
for (var key in characters.encode) {
text = text.replace(new RegExp(key, 'g'), characters.encode[key])
}
return text
}
var forCondition = opts.text.length > opts.secretMessage.length ? opts.text.length : opts.secretMessage.length
for (var i = 0; i < forCondition; i++) {
if (opts.text[i]) result += opts.text[i]
if (opts.secretMessage[i]) result += replaceAll(opts.secretMessage[i])
}
} else {
result = 'Minimum 2 characters required.'
}
return result
}
exports.decode = function (opts) {
var result = ''
if (opts.text.length > 1) {
var decode = ''
var triple = ''
var tripleCounter = 0
for (var i = 0, len = opts.text.length; i < len; i++) {
var realValueOfLetter = opts.text[i].codePointAt()
var realValueOfLetterString = realValueOfLetter.toString()
if (realValueOfLetter >= 8288 && realValueOfLetter <= 8291) {
tripleCounter++
triple += realValueOfLetterString
if (tripleCounter === 3) {
if (characters.decode.hasOwnProperty(triple)) {
decode += characters.decode[triple]
triple = ''
tripleCounter = 0
}
}
}
}
result = decode || 'There is no secret message in text.'
} else {
result = 'Minimum 2 characters required.'
}
return result
}
}(typeof exports === 'undefined' ? this.titus = {} : exports))