diff options
Diffstat (limited to 'lib/URI/IRI.pm')
-rw-r--r-- | lib/URI/IRI.pm | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/URI/IRI.pm b/lib/URI/IRI.pm new file mode 100644 index 0000000..8906399 --- /dev/null +++ b/lib/URI/IRI.pm @@ -0,0 +1,47 @@ +package URI::IRI; + +# Experimental + +use strict; +use warnings; +use URI (); + +use overload '""' => sub { shift->as_string }; + +our $VERSION = "1.69"; + +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; |