root/Convert.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
123
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPLv3.0

var Convert = (function() {

    function convert(format, str) {
        return str.split("").map(function(c) {
            var code = c.charCodeAt(0);
            var big = String.fromCharCode(format.big[0], format.big[1] - 65 + code);
            var small = String.fromCharCode(format.small[0], format.small[1] - 97 + code);
            if (code >= 65 && code <= 90) {
                return big;
            } else if (code >= 97 && code <= 122) {
                return small;
            }
            return c;
        }).join(format.spaceCharacters ? format.spaceCharacters : "");
    }

    function partial(fn, args) {
        return function() {
            var mergedArgs = args.concat(Array.prototype.slice.apply(arguments));
            return fn.apply(this, mergedArgs);
        }
    }

    var formats = [
        {
            format: {
                big: [0xD835, 0xDD6C],
                small: [0xD835, 0xDD86]
            },
            key: "Fraktur"
        },
        {
            format: {
                big: [0xD835, 0xDCD0],
                small: [0xD835, 0xDCEA]
            },
            key: "Script"
        },
        {
            format: {
                big: [0xD835, 0xDD38],
                small: [0xD835, 0xDD52]
            },
            key: "Double Struck"
        },
        {
            format: {
                big: [0x0000, 0xFF21],
                small: [0x0000, 0xFF41],
            },
            key: "Full width"
        },
        {
            format: {
                big: [0xD835, 0xDE70],
                small: [0xD835, 0xDE8A]
            },
            key: "Monospace"
        },
        {
            format: {
                big: [0xD835, 0xDC00],
                small: [0xD835, 0xDC1A]
            },
            key: "Bold"
        },
        {
            format: {
                big: [0xD83C, 0xDD10],
                small: [0xD83C, 0xDD10]
            },
            key: "Parenthesized"
        },
        {
            format: {
                big: [0xD83C, 0xDD30],
                small: [0xD83C, 0xDD30]
            },
            key: "Squared"
        },
        {
            format: {
                big: [0xD83C, 0xDD50],
                small: [0xD83C, 0xDD50]
            },
            key: "Negative Circled"
        },
        {
            format: {
                big: [0xD83C, 0xDD70],
                small: [0xD83C, 0xDD70]
            },
            key: "Negative Squared"
        },
        {
            format: {
                big: [0xD83C, 0xDDE6],
                small: [0xD83C, 0xDDE6],
                spaceCharacters: " "
            },
            key: "Regional Indicator"
        },
        {
            format: {
                big: [0xD83C, 0xDDE6],
                small: [0xD83C, 0xDDE6],
                spaceCharacters: "\u200b"
            },
            key: "Regional Indicator (zero space)"
        }
    ];

    var fromatsWithFn = formats.map(function(obj) {
        obj.fn = partial(convert, [obj.format]);
        return obj;
    });

    return {
        formats: fromatsWithFn
    }
})();