|
Lines 22-27
use Modern::Perl;
Link Here
|
| 22 |
use XML::Simple; |
22 |
use XML::Simple; |
| 23 |
use Pod::Usage; |
23 |
use Pod::Usage; |
| 24 |
use Getopt::Long; |
24 |
use Getopt::Long; |
|
|
25 |
use Carp; |
| 25 |
|
26 |
|
| 26 |
use open ':std', ':encoding(UTF-8)'; |
27 |
use open ':std', ':encoding(UTF-8)'; |
| 27 |
|
28 |
|
|
Lines 37-62
my $outfile;
Link Here
|
| 37 |
my $tempfile = '/tmp/languages.xml'; |
38 |
my $tempfile = '/tmp/languages.xml'; |
| 38 |
|
39 |
|
| 39 |
GetOptions( |
40 |
GetOptions( |
| 40 |
'o|output:s' => \$outfile, |
41 |
'o|output:s' => \$outfile, |
| 41 |
'url:s' => \$sourceurl, |
42 |
'url:s' => \$sourceurl, |
| 42 |
'help|h' => \$help, |
43 |
'help|h' => \$help, |
| 43 |
); |
44 |
); |
| 44 |
|
45 |
|
| 45 |
usage() if $help; |
46 |
usage() if $help; |
| 46 |
|
47 |
|
| 47 |
# output log or STDOUT |
48 |
system(qq{/usr/bin/wget $sourceurl -O $tempfile }) == 0 |
| 48 |
if (defined $outfile) { |
49 |
or croak "Can't wget $sourceurl ($?)"; |
| 49 |
open (OUT, ">$outfile") || die ("Cannot open output file"); |
|
|
| 50 |
} else { |
| 51 |
open(OUT, ">&STDOUT") || die ("Couldn't duplicate STDOUT: $!"); |
| 52 |
} |
| 53 |
|
| 54 |
system( qq{/usr/bin/wget $sourceurl -O $tempfile } ) == 0 or die "Can't wget $sourceurl ($?)"; |
| 55 |
|
50 |
|
| 56 |
my $ref = XMLin($tempfile); |
51 |
my $ref = XMLin($tempfile); |
| 57 |
my $languages = $ref->{'languages'}->{'language'}; |
52 |
my $languages = $ref->{'languages'}->{'language'}; |
| 58 |
|
53 |
|
| 59 |
print OUT <<HEADER; |
54 |
# output log or STDOUT |
|
|
55 |
my $out_handle; |
| 56 |
if ( defined $outfile ) { |
| 57 |
open( $out_handle, '>', $outfile ) || croak("Cannot open output file"); |
| 58 |
} |
| 59 |
else { |
| 60 |
open( $out_handle, ">&STDOUT" ) || croak("Couldn't duplicate STDOUT: $!"); |
| 61 |
} |
| 62 |
generate_header($out_handle); |
| 63 |
generate_body($out_handle, $languages); |
| 64 |
generate_footer($out_handle); |
| 65 |
close $out_handle; |
| 66 |
|
| 67 |
sub generate_body { |
| 68 |
my ( $file_handle, $language_list ) = @_; |
| 69 |
|
| 70 |
foreach my $l ( @{$language_list} ) { |
| 71 |
my $code = $l->{'code'}; |
| 72 |
my $name = ( |
| 73 |
ref( $l->{'name'} ) eq 'HASH' |
| 74 |
? $l->{'name'}{'content'} |
| 75 |
: $l->{'name'} |
| 76 |
); |
| 77 |
next if ( ref($code) eq 'HASH' && $code->{'status'} eq 'obsolete' ); |
| 78 |
print {$file_handle} " <xsl:when test=\"\$code='$code'\">"; |
| 79 |
print {$file_handle} "<xsl:text>$name</xsl:text>"; |
| 80 |
print {$file_handle} "</xsl:when>"; |
| 81 |
print {$file_handle} "\n"; |
| 82 |
} |
| 83 |
return; |
| 84 |
} |
| 85 |
|
| 86 |
sub generate_header { |
| 87 |
my ($file_handle) = @_; |
| 88 |
print {$file_handle} <<"HEADER"; |
| 60 |
<?xml version="1.0" encoding="UTF-8"?> |
89 |
<?xml version="1.0" encoding="UTF-8"?> |
| 61 |
<!DOCTYPE stylesheet [<!ENTITY nbsp " " >]> |
90 |
<!DOCTYPE stylesheet [<!ENTITY nbsp " " >]> |
| 62 |
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
91 |
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
|
Lines 65-82
print OUT <<HEADER;
Link Here
|
| 65 |
<xsl:param name="code"/> |
94 |
<xsl:param name="code"/> |
| 66 |
<xsl:choose> |
95 |
<xsl:choose> |
| 67 |
HEADER |
96 |
HEADER |
| 68 |
|
97 |
return; |
| 69 |
foreach my $l (@{$languages}) { |
|
|
| 70 |
my $code = $l->{'code'}; |
| 71 |
my $name = (ref($l->{'name'}) eq 'HASH' ? $l->{'name'}{'content'} : $l->{'name'}); |
| 72 |
next if (ref($code) eq 'HASH' && $code->{'status'} eq 'obsolete'); |
| 73 |
print OUT " <xsl:when test=\"\$code='".$code."'\">"; |
| 74 |
print OUT "<xsl:text>$name</xsl:text>"; |
| 75 |
print OUT "</xsl:when>"; |
| 76 |
print OUT "\n"; |
| 77 |
} |
98 |
} |
| 78 |
|
99 |
|
| 79 |
print OUT <<FOOTER; |
100 |
sub generate_footer { |
|
|
101 |
my ($file_handle) = @_; |
| 102 |
print {$file_handle} <<"FOOTER"; |
| 80 |
<xsl:otherwise> |
103 |
<xsl:otherwise> |
| 81 |
<xsl:text>Unknown language code</xsl:text> |
104 |
<xsl:text>Unknown language code</xsl:text> |
| 82 |
</xsl:otherwise> |
105 |
</xsl:otherwise> |
|
Lines 84-89
print OUT <<FOOTER;
Link Here
|
| 84 |
</xsl:template> |
107 |
</xsl:template> |
| 85 |
</xsl:stylesheet> |
108 |
</xsl:stylesheet> |
| 86 |
FOOTER |
109 |
FOOTER |
|
|
110 |
return; |
| 111 |
} |
| 87 |
|
112 |
|
| 88 |
=head1 NAME |
113 |
=head1 NAME |
| 89 |
|
114 |
|
| 90 |
- |
|
|