📄 news.pm
字号:
package URI::URL::news;
require URI::URL;
@ISA = qw(URI::URL);
use URI::Escape;
sub new {
my($class, $init, $base) = @_;
my $self = bless { }, $class;
$self->{'scheme'} = lc($1) if $init =~ s/^\s*([\w\+\.\-]+)://;
$self->groupart(uri_unescape($init));
$self->base($base) if $base;
$self;
}
sub groupart {
my $self = shift;
my $old = $self->{'path'};
if (@_) {
my $p = shift;
if (defined $p && $p =~ /\@/) {
# it is an message id
$p =~ s/^<(.*)>$/$1/; # "<" and ">" should not be part of it
}
$self->{'path'} = $p;
}
$old;
}
*path = \&groupart;
sub article {
my $self = shift;
Carp::croak("Illegal article id name (does not contain '\@')")
if @_ && $_[0] !~ /\@/;
my $old = $self->groupart(@_);
return undef if $old !~ /\@/;
$old;
}
sub group {
my $self = shift;
Carp::croak("Illegal group name (contains '\@')")
if @_ && $_[0] =~ /\@/;
my $old = $self->groupart(@_);
return undef if $old =~ /\@/;
$old;
}
sub crack
{
my $self = shift;
('news', # scheme
undef, # user
undef, # passwd
undef, # host
undef, # port
$self->{'path'}, # path
undef, # params
undef, # query
undef # fragment
)
}
sub as_string {
my $self = shift;
my $scheme = $self->{'scheme'} || "news";
"$scheme:" . uri_escape($self->{'path'});
}
1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -