mourningdove/cgi-bin/DW/XML/RSS.pm

70 lines
1.7 KiB
Perl
Raw Normal View History

2026-05-24 01:03:05 +00:00
#!/usr/bin/perl
#
# Authors:
# Afuna <coder.dw@afunamatata.com>
#
# Copyright (c) 2014 by Dreamwidth Studios, LLC.
#
# This program is free software; you may redistribute it and/or modify it under
# the same terms as Perl itself. For a copy of the license, please reference
# 'perldoc perlartistic' or 'perldoc perlgpl'.
package DW::XML::RSS;
use base qw(XML::RSS);
use DW::XML::Parser;
use strict;
=head1 NAME
DW::XML::RSS
=cut
# taken straight from XML::RSS, but switched to use DW::XML::Parser
sub _get_parser {
my $self = shift;
return DW::XML::Parser->new(
Namespaces => 1,
NoExpand => 1,
ParseParamEnt => 0,
Handlers => {
Char => sub {
my ( $parser, $cdata ) = @_;
$self->_parser($parser);
$self->_handle_char($cdata);
# Detach the parser to avoid reference loops.
$self->_parser(undef);
},
XMLDecl => sub {
my $parser = shift;
$self->_parser($parser);
$self->_handle_dec(@_);
# Detach the parser to avoid reference loops.
$self->_parser(undef);
},
Start => sub {
my $parser = shift;
$self->_parser($parser);
$self->_handle_start(@_);
# Detach the parser to avoid reference loops.
$self->_parser(undef);
},
End => sub {
my $parser = shift;
$self->_parser($parser);
$self->_handle_end(@_);
# Detach the parser to avoid reference loops.
$self->_parser(undef);
},
}
);
}
1;