aboutsummaryrefslogtreecommitdiff
path: root/gentrans2.pl
diff options
context:
space:
mode:
Diffstat (limited to 'gentrans2.pl')
-rwxr-xr-xgentrans2.pl60
1 files changed, 60 insertions, 0 deletions
diff --git a/gentrans2.pl b/gentrans2.pl
new file mode 100755
index 0000000..2c83b22
--- /dev/null
+++ b/gentrans2.pl
@@ -0,0 +1,60 @@
+#!/usr/bin/perl -p
+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',
+ "'" => 'apostrophe',
+ '\\' => 'backslash',
+ ':' => 'colon',
+ ';' => 'semicolon',
+ '=' => 'equal',
+ ' ' => '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>/;
+ s({([][[:alnum:] _+:;%@>=`<,.^\$+#()?!/|'\\~-]+)})(splitup($1))e;
+ if (length($1) > 7) {
+ $_=$hold;
+ s/^<MM>/### <MM>/;
+ }
+}