#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Encode;
use LWP::Simple;
use YAML;
my $text = decode("shift_jis", get("http://miyagawa.googlepages.com/convert.txt"));
$text =~ tr/\r//d;
my $from_number = {};
setup_table($from_number);
my @table;
my %conv;
for (split /\n/, $text) {
next unless /^\d/;
chomp;
# 89468 = 8 95 68
# 169102 = 169 102
s/^(\d)(\d{2})(\d{2})$/$1 $2 $3/;
s/(\d{3})(\d{3})/$1 $2/;
# 拡02 => 拡2
s/拡0(\d)/拡$1/;
my %map;
@map{qw( softbank kddi docomo )} = split / (?:\- )?/, $_, 3;
for my $c ( qw( softbank kddi docomo )) {
warn "[$c] $_" unless defined $map{$c};
my $key = $c eq 'kddi' ? 'unicode_auto' : 'unicode';
if ($map{$c} =~ m!/!) {
my @code = split '/', $map{$c};
$map{$c} = join "", map $from_number->{$c}{$_}{$key}, @code;
} else {
my $info = $from_number->{$c}{$map{$c}};
if ($info) {
$map{$c} = $info->{$key};
} elsif ($map{$c} ne '〓' && $map{$c} !~ /^\[/) {
warn "$c: $map{$c}";
}
}
}
push @table, \%map;
$conv{$map{softbank}} = {
kddi => $map{kddi},
docomo => $map{docomo},
};
}
binmode STDOUT, ":utf8";
#print Dump \@table;
print Dump \%conv;
sub setup_table {
my $from_number = shift;
for my $c ( qw( docomo kddi softbank ) ) {
my $dat = YAML::LoadFile("dat/$c-table.yaml");
for my $row (@$dat) {
$from_number->{$c}{ decode_utf8($row->{number}) } = $row;
}
}
}