root/lang/perl/HTTP-MobileAgent/trunk/bin/makedocomomap @ 1328

Revision 1328, 2.2 kB (checked in by kan, 6 years ago)

added svn:mimetype. and fixed regexp bugs.

  • Property svn:executable set to *
  • Property svn:mimetype set to text/plain;charset=euc-jp
Line 
1#!/usr/bin/perl -w
2use strict;
3use FindBin;
4use Jcode;
5use LWP::Simple;
6use Data::Dumper;
7use HTTP::MobileAgent;
8
9my $URL = 'http://www.nttdocomo.co.jp/service/imode/make/content/spec/screen_area/index.html';
10
11do_task(@ARGV);
12
13sub do_task {
14    my $html = Jcode->new(get($URL))->tr('��-��', '0-9')->euc;
15    $html =~ s/(?:\r?\n)+/\n/g;
16    my $re = regexp();
17    my %map;
18    while ($html =~ /$re/igs) {
19        my($model, $width, $height, $color, $depth) = ($1, $2, $3, $4, $5);
20        $map{uc($model)} = {
21            width => $width,
22            height => $height,
23            color => $color eq '���顼',
24            depth => $depth,
25        };
26    }
27    my $overwrite = $ARGV[0] && $ARGV[0] eq '-o';
28    output_code(\%map, $overwrite);
29}
30
31sub output_code {
32    my($map, $overwrite) = @_;
33    if ($overwrite) {
34        open MAP, "> $FindBin::Bin/../lib/HTTP/MobileAgent/DoCoMoDisplayMap.pm" or die $!;
35        select MAP;
36    }
37    $Data::Dumper::Indent = 1;
38    $Data::Dumper::Terse  = 1;
39    printf <<'TEMPLATE', Data::Dumper->Dump([ $map ]);
40package HTTP::MobileAgent::DoCoMoDisplayMap;
41# This file is autogenerated by makedocomomap
42# in HTTP-MobileAgent distribution
43
44use strict;
45require Exporter;
46use base qw(Exporter);
47
48use vars qw(@EXPORT_OK $DisplayMap);
49@EXPORT_OK = qw($DisplayMap);
50
51BEGIN {
52    if ($ENV{DOCOMO_MAP}) {
53        eval q{
54            require XML::Simple;
55            my $xml = XML::Simple->new;
56            my $map = $xml->XMLin($ENV{DOCOMO_MAP});
57            if ($map->{terminal}) {
58                # new layout
59                for my $terminal (@{$map->{terminal}}) {
60                    my $model = delete $terminal->{model};
61                    $DisplayMap->{$model} = $terminal;
62                }
63            }
64            else {
65                # old layout
66                $DisplayMap = $map;
67            }
68        };
69        warn "using normal hash map: $@" if $@;
70    }
71}
72
73$DisplayMap ||= %s;
74
751;
76TEMPLATE
77    ;
78    if ($overwrite) {
79        close MAP;
80    }
81}
82
83sub regexp {
84    return <<'RE';
85<td><span class="txt">([A-Z]+\d+\w*\+?).*?</span></td>
86<td><span class="txt">.*?(?:</span></td>)?
87<td><span class="txt">.*?(?:</span></td>)?
88<td><span class="txt">.*?(\d+)��\d+).*?</span></td>
89<td>.*?</td>
90<td><span class="txt">(����顼)(?:.*?)(\d+)(?:��|��Ĵ)</span></td>
91RE
92    ;
93}
Note: See TracBrowser for help on using the browser.