File size: 1,736 Bytes
e870690
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
var ReverseUnicode = {
  mirrorMap: {
    'a': '\u0250', 'b': '\u0183', 'c': '\u0254', 'd': '\u018A',
    'e': '\u01DD', 'f': '\u025F', 'g': '\u0283', 'h': '\u0265',
    'i': '\u0131', 'j': '\u027F', 'k': '\u029E', 'l': '\u026F',
    'm': '\u026D', 'n': '\u014B', 'o': '\u0275', 'p': '\u028C',
    'q': '\u0250', 'r': '\u027E', 's': '\u0282', 't': '\u0287',
    'u': '\u028A', 'v': '\u028C', 'w': '\u026D', 'x': '\u00D7',
    'y': '\u028E', 'z': '\u0251',
    'A': '\u2200', 'B': '\u0181', 'C': '\u0186', 'D': '\u018A',
    'E': '\u018E', 'F': '\u2132', 'G': '\u0193', 'H': '\u0179',
    'I': '\u0196', 'J': '\u017F', 'K': '\u0198', 'L': '\u02E1',
    'M': '\u019C', 'N': '\u014A', 'O': '\u019F', 'P': '\u01A3',
    'Q': '\u024A', 'R': '\u0280', 'S': '\u0161', 'T': '\u0166',
    'U': '\u0168', 'V': '\u0245', 'W': '\u024B', 'X': '\u00D7',
    'Y': '\u01B4', 'Z': '\u023F',
    '0': '0', '1': '1', '2': '2', '3': '3', '4': '4',
    '5': '5', '6': '6', '7': '7', '8': '8', '9': '9',
    ' ': ' ', '.': '\u02D9', ',': '\u02CC', '!': '\u00A1',
    '?': '\u00BF', '(': ')', ')': '(', '[': ']', ']': '[',
    '{': '}', '}': '{', '<': '>', '>': '<', '"': '"', "'": "'"
  },

  reverse: function(input) {
    return input.split('').reverse().join('');
  },

  mirror: function(input) {
    var self = this;
    return input.split('').map(function(ch) {
      return self.mirrorMap[ch] || ch;
    }).join('');
  },

  restore: function(input) {
    var reverseMap = {};
    var self = this;
    Object.keys(this.mirrorMap).forEach(function(k) {
      reverseMap[self.mirrorMap[k]] = k;
    });
    return input.split('').map(function(ch) {
      return reverseMap[ch] || ch;
    }).join('');
  }
};