NEXT LINE --> NEL
[p5sagit/p5-mst-13.2.git] / ext / Encode / ucm2table
CommitLineData
64ffdd5e 1#!/usr/bin/perl
2
3use 5.006;
4use strict;
5use Getopt::Std;
6my %Opt;
7getopts("eu", \%Opt);
8my @Chartab;
9
10my $Hex = '[0-9A-Fa-f]';
11while(<>){
12 chomp;
13 my ($uni, $enc, $fb, $comment) =
14 /^<U($Hex+)>\s+(\S+)\s+\|(\d)\s+#\s+(.*)$/o or next;
15 $comment =~ /<control>/io and next;
16 $comment =~ /^DELETE/o and next;
17 # print "$uni $enc $fb $comment\n";
18 my @byte = ();
19 my $ord = 0;
20 while($enc =~ /\G\\x($Hex+)/iog){
21 my $byte = hex($1);
22 push @byte, $byte;
23 $ord <<= 8; $ord += $byte;
24 };
25 # print join('', @byte), " => $ord \n";
26 if ($Opt{u}){
27 $Chartab[$ord] = pack("U", hex($uni));
28 }else{
29 $Chartab[$ord] = pack("C*", @byte);
30 }
31}
32
33for (my $x = 0x20; $x <= 0xffff; $ x+= 32) {
34 my $line = '';
35 for my $i (0..31){
36 my $char = $Chartab[$x+$i];
37 $line .= !$char ? " " :
38 ($x+$i < 0x7f ) ? " $char" : $char ;
39 }
40 $line =~ /^\s+$/o and next;
41 printf "0x%04x: $line\n", $x;
42}