diff options
Diffstat (limited to 'Master/tlpkg/tlperl/site/lib/URI/IRI.pm')
-rw-r--r-- | Master/tlpkg/tlperl/site/lib/URI/IRI.pm | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/site/lib/URI/IRI.pm b/Master/tlpkg/tlperl/site/lib/URI/IRI.pm new file mode 100644 index 00000000000..3dadd39f3f0 --- /dev/null +++ b/Master/tlpkg/tlperl/site/lib/URI/IRI.pm @@ -0,0 +1,48 @@ +package URI::IRI; + +# Experimental + +use strict; +use warnings; +use URI (); + +use overload '""' => sub { shift->as_string }; + +our $VERSION = '1.71'; +$VERSION = eval $VERSION; + +sub new { + my($class, $uri, $scheme) = @_; + utf8::upgrade($uri); + return bless { + uri => URI->new($uri, $scheme), + }, $class; +} + +sub clone { + my $self = shift; + return bless { + uri => $self->{uri}->clone, + }, ref($self); +} + +sub as_string { + my $self = shift; + return $self->{uri}->as_iri; +} + +our $AUTOLOAD; +sub AUTOLOAD +{ + my $method = substr($AUTOLOAD, rindex($AUTOLOAD, '::')+2); + + # We create the function here so that it will not need to be + # autoloaded the next time. + no strict 'refs'; + *$method = sub { shift->{uri}->$method(@_) }; + goto &$method; +} + +sub DESTROY {} # avoid AUTOLOADing it + +1; |