diff options
Diffstat (limited to 'emojitrans2.pl')
-rwxr-xr-x | emojitrans2.pl | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/emojitrans2.pl b/emojitrans2.pl new file mode 100755 index 0000000..3b98ad2 --- /dev/null +++ b/emojitrans2.pl @@ -0,0 +1,57 @@ +#!/usr/bin/perl -p +BEGIN { binmode(STDOUT, ":utf8"); + binmode(STDIN, ":utf8"); + +%specials = ('%' => 'percent', + '-' => 'minus', + '>' => 'greater', + '<' => 'less', + ',' => 'comma', + '.' => 'period', + '$' => 'dollar', + '!' => 'exclam', + '?' => 'question', + '+' => 'plus', + '/' => 'slash', + '#' => 'numbersign', + '@' => 'at', + '|' => 'bar', + '~' => 'asciitilde', + '^' => 'asciicircum', + '(' => 'parenleft', + ')' => 'parenright', + '[' => 'bracketleft', + ']' => 'bracketright', + "'" => 'apostrophe', + '\\' => 'backslash', + ':' => 'colon', + ';' => 'semicolon', + ' ' => 'space', +); + +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/<MM>/<Multi_key> <Multi_key>/; + s({([][[:alnum:] _+:;%@><,.^\$+#()?!/|'\\~-]+)})(splitup($1))e; + if (length($1) > 7) { + $_=$hold; + s/^<MM>/### <MM>/; + } +} |