package URI::mailto; # RFC 2368 use strict; use warnings; our $VERSION = '1.73'; $VERSION = eval $VERSION; 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;
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
file | Folder | 0755 |
|
|
urn | Folder | 0755 |
|
|
Escape.pm | File | 6.9 KB | 0644 |
|
Heuristic.pm | File | 6.37 KB | 0644 |
|
IRI.pm | File | 820 B | 0644 |
|
QueryParam.pm | File | 4.77 KB | 0644 |
|
Split.pm | File | 2.32 KB | 0644 |
|
URL.pm | File | 5.36 KB | 0644 |
|
WithBase.pm | File | 3.77 KB | 0644 |
|
_foreign.pm | File | 133 B | 0644 |
|
_generic.pm | File | 5.71 KB | 0644 |
|
_idna.pm | File | 2.06 KB | 0644 |
|
_ldap.pm | File | 3.2 KB | 0644 |
|
_login.pm | File | 257 B | 0644 |
|
_punycode.pm | File | 5.52 KB | 0644 |
|
_query.pm | File | 2.5 KB | 0644 |
|
_segment.pm | File | 442 B | 0644 |
|
_server.pm | File | 3.66 KB | 0644 |
|
_userpass.pm | File | 1.04 KB | 0644 |
|
data.pm | File | 3.34 KB | 0644 |
|
file.pm | File | 9.53 KB | 0644 |
|
ftp.pm | File | 1.06 KB | 0644 |
|
gopher.pm | File | 2.4 KB | 0644 |
|
http.pm | File | 451 B | 0644 |
|
https.pm | File | 170 B | 0644 |
|
ldap.pm | File | 2.88 KB | 0644 |
|
ldapi.pm | File | 467 B | 0644 |
|
ldaps.pm | File | 170 B | 0644 |
|
mailto.pm | File | 1.27 KB | 0644 |
|
mms.pm | File | 151 B | 0644 |
|
news.pm | File | 1.45 KB | 0644 |
|
nntp.pm | File | 153 B | 0644 |
|
pop.pm | File | 1.2 KB | 0644 |
|
rlogin.pm | File | 155 B | 0644 |
|
rsync.pm | File | 233 B | 0644 |
|
rtsp.pm | File | 151 B | 0644 |
|
rtspu.pm | File | 152 B | 0644 |
|
sftp.pm | File | 124 B | 0644 |
|
sip.pm | File | 1.69 KB | 0644 |
|
sips.pm | File | 169 B | 0644 |
|
snews.pm | File | 198 B | 0644 |
|
ssh.pm | File | 201 B | 0644 |
|
telnet.pm | File | 154 B | 0644 |
|
tn3270.pm | File | 154 B | 0644 |
|
urn.pm | File | 2.15 KB | 0644 |
|