forked from kragen/xcompose
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathemojitrans2.pl
executable file
·69 lines (65 loc) · 1.43 KB
/
emojitrans2.pl
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
#!/usr/bin/env -S perl -p
use feature 'unicode_strings';
use utf8;
BEGIN { binmode(STDOUT, ":utf8");
binmode(STDIN, ":utf8");
%specials = ('%' => 'percent',
'-' => 'minus',
'_' => 'underscore',
'>' => 'greater',
'<' => 'less',
',' => 'comma',
'.' => 'period',
'$' => 'dollar',
'!' => 'exclam',
'?' => 'question',
'+' => 'plus',
'/' => 'slash',
'#' => 'numbersign',
'@' => 'at',
'|' => 'bar',
'`' => 'grave',
'~' => 'asciitilde',
'^' => 'asciicircum',
'(' => 'parenleft',
')' => 'parenright',
'[' => 'bracketleft',
']' => 'bracketright',
'{' => 'braceleft',
'}' => 'braceright',
"'" => 'apostrophe',
'"' => 'quotedbl',
'\\' => 'backslash',
':' => 'colon',
';' => 'semicolon',
'=' => 'equal',
' ' => 'space',
'*' => 'asterisk',
'&' => 'ampersand',
'♫' => 'Multi_key',
);
sub splitup {
my $arg=shift;
local $_;
my @out;
my $rv;
return "\{$arg\}" if length($arg) > 7;
@out=split //, $arg;
$rv="";
for (@out) {
$_ = $specials{$_} // $_;
$rv .= " <$_>";
}
return $rv;
}
}
unless (/^#/) {
my $hold=$_;
s/<M_>/<Multi_key>/;
s/<MM>/<Multi_key> <Multi_key>/;
s({([][[:alnum:] _+:;%@>=`<,.^\$+#()?&!/|'"\\~*{}♫-]+)})(splitup($1))e;
if (length($1) > 7) {
$_=$hold;
s/^<M([M_])>/### <M$1>/;
}
}