-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
aesthetic.coffee
78 lines (74 loc) · 2.49 KB
/
aesthetic.coffee
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
#! ========================================
#! Latin to fullwidth maps
latin = [
'!"#$%&\'()*+,-./'
'0123456789:;<=>?'
'@ABCDEFGHIJKLMNO'
'PQRSTUVWXYZ[\\]^_'
'`abcdefghijklmno'
'pqrstuvwxyz{|}~'
'¢£¥• '
].join ''
fullwidth = [
'!"#$%&'()*+,-./'
'0123456789:;<=>?'
'@ABCDEFGHIJKLMNO'
'PQRSTUVWXYZ[\]^_'
'`abcdefghijklmno'
'pqrstuvwxyz{|}~'
'¢£¥・ '
].join ''
#! ========================================
#! Converter
toFullwidth = (txt) ->
#! Match any character...
String(txt).replace(/[\s\S]+?/g, (match, pos, string) ->
i = latin.indexOf match
if i isnt -1
#! If it's in the latin set, replace it with it's
#! fullwidth equivalent
fullwidth[i]
else
#! If not, just return that character ¯\_(ツ)_/¯
match
)
#! ========================================
#! Aesthetic
handler = (msg, match, Haruka) ->
txt = msg.cleanContent.replace(
new RegExp("^(#{Haruka.prefix})\\s+(aesthetic|wide|ae)\\s+", 'i'),
''
)
if not txt? then return msg.channel.send [
"Function was called without sufficient arguments."
"Use `-h help aesthetic` for help on this function."
"Use `-h aesthetic` followed by whatever
you want me to “aesthetic-ize”."
# """
# ```
# SyntaxError: Expected 1 argument, saw 0.
# at handler (src/functions/aesthetic.coffee:4:20)
# at Haruka.addFunction (src/Haruka.coffee:26:24)
# at fn.handler (src/Haruka.coffee:45:28)
# at Haruka.try (src/Haruka.coffee:29:14)
# at client.on 'message' (src/main.coffee:26:16)
# ```
# """
].choose()
# Better safe than sorry, disableEveryone
msg.channel.send toFullwidth(txt), disableEveryone: yes
module.exports = {
name: "Aesthetic"
regex: /^(aesthetic|wide|ae)(\s+|$)/i
handler: handler
help:
short: "-h ae <text> ::
Makes your text more aesthetic."
long: """
```asciidoc
=== Help for Aesthetic ===
*Aliases*: aesthetic, wide, ae
-h aesthetic <text> :: Converts <text> into fullwidth characters.
```
"""
}