diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 02:44:24 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 02:44:24 +0000 |
commit | 8baab3c8d7a6f22888bd581cd5c6098fd2e4b5a8 (patch) | |
tree | 3537e168b860f2742f6029d70501b5ed7d15d345 /src/libvterm/tbl2inc_c.pl | |
parent | Initial commit. (diff) | |
download | vim-upstream.tar.xz vim-upstream.zip |
Adding upstream version 2:8.1.0875.upstream/2%8.1.0875upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/libvterm/tbl2inc_c.pl')
-rw-r--r-- | src/libvterm/tbl2inc_c.pl | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/libvterm/tbl2inc_c.pl b/src/libvterm/tbl2inc_c.pl new file mode 100644 index 0000000..527fc98 --- /dev/null +++ b/src/libvterm/tbl2inc_c.pl @@ -0,0 +1,51 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +my ( $encname ) = $ARGV[0] =~ m{/([^/.]+).tbl} + or die "Cannot parse encoding name out of $ARGV[0]\n"; + +print <<"EOF"; +static const struct StaticTableEncoding encoding_$encname = { + { + NULL, /* init */ + &decode_table /* decode */ + }, + { +EOF + +my $row = 0; +while( <> ) { + s/\s*#.*//; # strip comment + + if ($_ =~ m{^\d+/\d+}) { + my ($up, $low) = ($_ =~ m{^(\d+)/(\d+)}); + my $thisrow = $up * 16 + $low; + while ($row < $thisrow) { + print " 0x0, /* $row */\n"; + ++$row; + } + } + + s{^(\d+)/(\d+)}{""}e; # Remove 3/1 + s{ = }{""}e; # Remove " = " + s{"(.)"}{sprintf "0x%04x", ord $1}e; # Convert "A" to 0x41 + s{U\+}{0x}; # Convert U+0041 to 0x0041 + + s{$}{, /* $row */}; # append comma and index + + print " $_"; + + ++$row; +} + +while ($row < 128) { + print " 0x0, /* $row */\n"; + ++$row; +} + +print <<"EOF"; + } +}; +EOF |