aboutsummaryrefslogtreecommitdiff
path: root/emojitrans2.pl
blob: e3eec7cd4070fb187d8eb7923044426ac05215d9 (plain)
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>/;
    }
}