root/lang/perl/Encode-JP-Mobile/trunk/tools/softbank-convert.pl @ 5327

Revision 5327, 1.4 kB (checked in by miyagawa, 5 years ago)

add a tool to creat esoftbank -> kddi/docomo convert map

  • Property svn:executable set to *
Line 
1#!/usr/bin/perl
2use strict;
3use warnings;
4use utf8;
5use Encode;
6use LWP::Simple;
7use YAML;
8
9my $text = decode("shift_jis", get("http://miyagawa.googlepages.com/convert.txt"));
10   $text =~ tr/\r//d;
11
12my $from_number = {};
13setup_table($from_number);
14
15my @table;
16for (split /\n/, $text) {
17    next unless /^\d/;
18    chomp;
19
20    # 89468 = 8 95 68
21    # 169102 = 169 102
22    s/^(\d)(\d{2})(\d{2})$/$1 $2 $3/;
23    s/(\d{3})(\d{3})/$1 $2/;
24
25    # 拡02 => 拡2
26    s/拡0(\d)/拡$1/;
27
28    my %map;
29    @map{qw( softbank kddi docomo )} = split / (?:\- )?/, $_, 3;
30
31    for my $c ( qw( softbank kddi docomo )) {
32        warn "[$c] $_" unless defined $map{$c};
33        if ($map{$c} =~ m!/!) {
34            my @code = split '/', $map{$c};
35            $map{$c} = join " ", map $from_number->{$c}{$_}{unicode}, @code;
36        } else {
37            my $info = $from_number->{$c}{$map{$c}};
38            if ($info) {
39                $map{$c} = $info->{unicode};
40            } elsif ($map{$c} ne '〓' && $map{$c} !~ /^\[/) {
41                warn "$c: $map{$c}";
42            }
43        }
44    }
45
46    push @table, \%map;
47}
48
49binmode STDOUT, ":utf8";
50print Dump \@table;
51
52sub setup_table {
53    my $from_number = shift;
54    for my $c ( qw( docomo kddi softbank ) ) {
55        my $dat = YAML::LoadFile("dat/$c-table.yaml");
56        for my $row (@$dat) {
57            $from_number->{$c}{ decode_utf8($row->{number}) } = $row;
58        }
59    }
60}
Note: See TracBrowser for help on using the browser.