summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/URI/_punycode.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/URI/_punycode.pm')
-rwxr-xr-xMaster/tlpkg/tlperl/lib/URI/_punycode.pm203
1 files changed, 0 insertions, 203 deletions
diff --git a/Master/tlpkg/tlperl/lib/URI/_punycode.pm b/Master/tlpkg/tlperl/lib/URI/_punycode.pm
deleted file mode 100755
index e5600327a06..00000000000
--- a/Master/tlpkg/tlperl/lib/URI/_punycode.pm
+++ /dev/null
@@ -1,203 +0,0 @@
-package URI::_punycode;
-
-use strict;
-our $VERSION = 0.02;
-
-require Exporter;
-our @ISA = qw(Exporter);
-our @EXPORT = qw(encode_punycode decode_punycode);
-
-use integer;
-
-our $DEBUG = 0;
-
-use constant BASE => 36;
-use constant TMIN => 1;
-use constant TMAX => 26;
-use constant SKEW => 38;
-use constant DAMP => 700;
-use constant INITIAL_BIAS => 72;
-use constant INITIAL_N => 128;
-
-my $Delimiter = chr 0x2D;
-my $BasicRE = qr/[\x00-\x7f]/;
-
-sub _croak { require Carp; Carp::croak(@_); }
-
-sub digit_value {
- my $code = shift;
- return ord($code) - ord("A") if $code =~ /[A-Z]/;
- return ord($code) - ord("a") if $code =~ /[a-z]/;
- return ord($code) - ord("0") + 26 if $code =~ /[0-9]/;
- return;
-}
-
-sub code_point {
- my $digit = shift;
- return $digit + ord('a') if 0 <= $digit && $digit <= 25;
- return $digit + ord('0') - 26 if 26 <= $digit && $digit <= 36;
- die 'NOT COME HERE';
-}
-
-sub adapt {
- my($delta, $numpoints, $firsttime) = @_;
- $delta = $firsttime ? $delta / DAMP : $delta / 2;
- $delta += $delta / $numpoints;
- my $k = 0;
- while ($delta > ((BASE - TMIN) * TMAX) / 2) {
- $delta /= BASE - TMIN;
- $k += BASE;
- }
- return $k + (((BASE - TMIN + 1) * $delta) / ($delta + SKEW));
-}
-
-sub decode_punycode {
- my $code = shift;
-
- my $n = INITIAL_N;
- my $i = 0;
- my $bias = INITIAL_BIAS;
- my @output;
-
- if ($code =~ s/(.*)$Delimiter//o) {
- push @output, map ord, split //, $1;
- return _croak('non-basic code point') unless $1 =~ /^$BasicRE*$/o;
- }
-
- while ($code) {
- my $oldi = $i;
- my $w = 1;
- LOOP:
- for (my $k = BASE; 1; $k += BASE) {
- my $cp = substr($code, 0, 1, '');
- my $digit = digit_value($cp);
- defined $digit or return _croak("invalid punycode input");
- $i += $digit * $w;
- my $t = ($k <= $bias) ? TMIN
- : ($k >= $bias + TMAX) ? TMAX : $k - $bias;
- last LOOP if $digit < $t;
- $w *= (BASE - $t);
- }
- $bias = adapt($i - $oldi, @output + 1, $oldi == 0);
- warn "bias becomes $bias" if $DEBUG;
- $n += $i / (@output + 1);
- $i = $i % (@output + 1);
- splice(@output, $i, 0, $n);
- warn join " ", map sprintf('%04x', $_), @output if $DEBUG;
- $i++;
- }
- return join '', map chr, @output;
-}
-
-sub encode_punycode {
- my $input = shift;
- # my @input = split //, $input; # doesn't work in 5.6.x!
- my @input = map substr($input, $_, 1), 0..length($input)-1;
-
- my $n = INITIAL_N;
- my $delta = 0;
- my $bias = INITIAL_BIAS;
-
- my @output;
- my @basic = grep /$BasicRE/, @input;
- my $h = my $b = @basic;
- push @output, @basic;
- push @output, $Delimiter if $b && $h < @input;
- warn "basic codepoints: (@output)" if $DEBUG;
-
- while ($h < @input) {
- my $m = min(grep { $_ >= $n } map ord, @input);
- warn sprintf "next code point to insert is %04x", $m if $DEBUG;
- $delta += ($m - $n) * ($h + 1);
- $n = $m;
- for my $i (@input) {
- my $c = ord($i);
- $delta++ if $c < $n;
- if ($c == $n) {
- my $q = $delta;
- LOOP:
- for (my $k = BASE; 1; $k += BASE) {
- my $t = ($k <= $bias) ? TMIN :
- ($k >= $bias + TMAX) ? TMAX : $k - $bias;
- last LOOP if $q < $t;
- my $cp = code_point($t + (($q - $t) % (BASE - $t)));
- push @output, chr($cp);
- $q = ($q - $t) / (BASE - $t);
- }
- push @output, chr(code_point($q));
- $bias = adapt($delta, $h + 1, $h == $b);
- warn "bias becomes $bias" if $DEBUG;
- $delta = 0;
- $h++;
- }
- }
- $delta++;
- $n++;
- }
- return join '', @output;
-}
-
-sub min {
- my $min = shift;
- for (@_) { $min = $_ if $_ <= $min }
- return $min;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-URI::_punycode - encodes Unicode string in Punycode
-
-=head1 SYNOPSIS
-
- use URI::_punycode;
- $punycode = encode_punycode($unicode);
- $unicode = decode_punycode($punycode);
-
-=head1 DESCRIPTION
-
-URI::_punycode is a module to encode / decode Unicode strings into
-Punycode, an efficient encoding of Unicode for use with IDNA.
-
-This module requires Perl 5.6.0 or over to handle UTF8 flagged Unicode
-strings.
-
-=head1 FUNCTIONS
-
-This module exports following functions by default.
-
-=over 4
-
-=item encode_punycode
-
- $punycode = encode_punycode($unicode);
-
-takes Unicode string (UTF8-flagged variable) and returns Punycode
-encoding for it.
-
-=item decode_punycode
-
- $unicode = decode_punycode($punycode)
-
-takes Punycode encoding and returns original Unicode string.
-
-=back
-
-These functions throws exceptionsn on failure. You can catch 'em via
-C<eval>.
-
-=head1 AUTHOR
-
-Tatsuhiko Miyagawa E<lt>miyagawa@bulknews.netE<gt> is the author of
-IDNA::Punycode v0.02 which was the basis for this module.
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-L<IDNA::Punycode>, RFC 3492
-
-=cut