Apache-RSS
view release on metacpan or search on metacpan
lib/Apache/RSS.pm view on Meta::CPAN
my %SortBy = (
'N' => 'title' ,
'M' => 'mtime',
);
sub build_sorter {
my $args = shift;
# N=A by default
my $sortby = (grep exists $args->{$_}, keys %SortBy)[0] || 'N';
my $order = $args->{$sortby} || 'A';
my @target = $order eq 'A' ? qw($_[0] $_[1]) : qw($_[1] $_[0]);
my $cmp = $sortby eq 'N' ? 'cmp' : '<=>';
return eval sprintf "sub { %s->%s %s %s->%s }",
$target[0], $SortBy{$sortby}, $cmp, $target[1], $SortBy{$sortby};
}
##----------------------------------------------------------------
## Directives
##----------------------------------------------------------------
sub RSSEnableRegexp($$$){
my($cfg, $params, $arg) = @_;
$cfg->{RSSEnableRegexp} = eval "qr/$arg/";
die $@ if $@;
}
sub RSSChannelTitle($$$) {
my($cfg, $params, $arg) = @_;
$cfg->{RSSChannelTitle} = $arg;
}
sub RSSChannelDescription($$$) {
my($cfg, $params, $arg) = @_;
$cfg->{RSSChannelDescription} = $arg;
}
sub RSSCopyRight($$$) {
my($cfg, $params, $arg) = @_;
$cfg->{RSSCopyRight} = $arg;
}
sub RSSScanHTMLTitle($$$){
my($cfg, $params, $arg) = @_;
$cfg->{RSSScanHTMLTitle} = $arg;
}
sub RSSLanguage($$$){
my($cfg, $params, $arg) = @_;
$cfg->{RSSLanguage} = $arg;
}
sub RSSEncoding($$$){
my($cfg, $params, $arg) = @_;
$cfg->{RSSEncoding} = $arg;
}
sub RSSEncodeHandler($$$) {
my($cfg, $params, $arg) = @_;
$arg =~ m/([a-zA-Z0-9:]+)/; # untaint
my $class = $1;
eval "require $class";
if ($@ && $@ !~ m/^Can't locate/) {
die $@;
}
$cfg->{RSSEncodeHandler} = $arg;
}
sub DIR_CREATE {
my $class = shift;
my $self = bless {}, $class;
$self;
}
sub DIR_MERGE {
my($parent, $current) = @_;
my %new = (%$parent, %$current);
return bless \%new, ref($parent);
}
## ----------------------------------------------------------------
## Apache::RSS::Item
## ----------------------------------------------------------------
package Apache::RSS::Item;
use strict;
sub new {
my($class, $args) = @_;
my $self = bless {
}, $class;
$self->{filename} = $args->{filename};
$self->{content_type} = $args->{content_type};
$self->{link} = $args->{link};
$self->{title} = $args->{title};
$self->{mtime} = $args->{mtime};
$self;
}
{
my $loaded;
unless ($loaded) {
for my $attr (qw(mtime filename name link title content_type)) {
no strict 'refs';
*$attr = sub {
my $self = shift;
$self->{$attr} = shift if @_;
return $self->{$attr};
};
}
$loaded++;
}
}
1;
__END__
=head1 NAME
Apache::RSS - generate RSS output for directory Index.
( run in 1.596 second using v1.01-cache-2.11-cpan-39bf76dae61 )