CardiacPhase/Git/usr/share/perl5/vendor_perl/URI/mailto.pm

74 lines
1.2 KiB
Perl

package URI::mailto; # RFC 2368
use strict;
use warnings;
our $VERSION = '1.76';
use parent qw(URI URI::_query);
sub to
{
my $self = shift;
my @old = $self->headers;
if (@_) {
my @new = @old;
# get rid of any other to: fields
for (my $i = 0; $i < @new; $i += 2) {
if (lc($new[$i] || '') eq "to") {
splice(@new, $i, 2);
redo;
}
}
my $to = shift;
$to = "" unless defined $to;
unshift(@new, "to" => $to);
$self->headers(@new);
}
return unless defined wantarray;
my @to;
while (@old) {
my $h = shift @old;
my $v = shift @old;
push(@to, $v) if lc($h) eq "to";
}
join(",", @to);
}
sub headers
{
my $self = shift;
# The trick is to just treat everything as the query string...
my $opaque = "to=" . $self->opaque;
$opaque =~ s/\?/&/;
if (@_) {
my @new = @_;
# strip out any "to" fields
my @to;
for (my $i=0; $i < @new; $i += 2) {
if (lc($new[$i] || '') eq "to") {
push(@to, (splice(@new, $i, 2))[1]); # remove header
redo;
}
}
my $new = join(",",@to);
$new =~ s/%/%25/g;
$new =~ s/\?/%3F/g;
$self->opaque($new);
$self->query_form(@new) if @new;
}
return unless defined wantarray;
# I am lazy today...
URI->new("mailto:?$opaque")->query_form;
}
1;