X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=dev%2Farm%2Fliburi-perl%2Fliburi-perl-1.35.dfsg.1%2FURI%2Fnews.pm;fp=dev%2Farm%2Fliburi-perl%2Fliburi-perl-1.35.dfsg.1%2FURI%2Fnews.pm;h=1ffb419f673d59b318230fd78823f25a82aeaeb7;hb=f477fa73365d491991707e7ed9217b48d6994551;hp=0000000000000000000000000000000000000000;hpb=da95c414033799c3a62606f299c3c00b5c77ca11;p=dh-make-perl diff --git a/dev/arm/liburi-perl/liburi-perl-1.35.dfsg.1/URI/news.pm b/dev/arm/liburi-perl/liburi-perl-1.35.dfsg.1/URI/news.pm new file mode 100644 index 0000000..1ffb419 --- /dev/null +++ b/dev/arm/liburi-perl/liburi-perl-1.35.dfsg.1/URI/news.pm @@ -0,0 +1,68 @@ +package URI::news; # draft-gilman-news-url-01 + +require URI::_server; +@ISA=qw(URI::_server); + +use strict; +use URI::Escape qw(uri_unescape); +use Carp (); + +sub default_port { 119 } + +# newsURL = scheme ":" [ news-server ] [ refbygroup | message ] +# scheme = "news" | "snews" | "nntp" +# news-server = "//" server "/" +# refbygroup = group [ "/" messageno [ "-" messageno ] ] +# message = local-part "@" domain + +sub _group +{ + my $self = shift; + my $old = $self->path; + if (@_) { + my($group,$from,$to) = @_; + if ($group =~ /\@/) { + $group =~ s/^<(.*)>$/$1/; # "<" and ">" should not be part of it + } + $group =~ s,%,%25,g; + $group =~ s,/,%2F,g; + my $path = $group; + if (defined $from) { + $path .= "/$from"; + $path .= "-$to" if defined $to; + } + $self->path($path); + } + + $old =~ s,^/,,; + if ($old !~ /\@/ && $old =~ s,/(.*),, && wantarray) { + my $extra = $1; + return (uri_unescape($old), split(/-/, $extra)); + } + uri_unescape($old); +} + + +sub group +{ + my $self = shift; + if (@_) { + Carp::croak("Group name can't contain '\@'") if $_[0] =~ /\@/; + } + my @old = $self->_group(@_); + return if $old[0] =~ /\@/; + wantarray ? @old : $old[0]; +} + +sub message +{ + my $self = shift; + if (@_) { + Carp::croak("Message must contain '\@'") unless $_[0] =~ /\@/; + } + my $old = $self->_group(@_); + return unless $old =~ /\@/; + return $old; +} + +1;