This file is indexed.

/usr/share/perl5/XML/RSS/LibXML/MagicElement.pm is in libxml-rss-libxml-perl 0.3102+dfsg-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# $Id$
#
# Copyright (c) 2005 Daisuke Maki <dmaki@cpan.org>
# All rights reserved.

package XML::RSS::LibXML::MagicElement;
use strict;
use overload 
    bool => sub { 1 },
    '""' => \&toString,
    fallback => 1
;
use vars qw($VERSION);
$VERSION = '0.02';

# Make UNIVERSAL::isa happy
sub isa { __PACKAGE__ eq ($_[1] || '') } 

sub new
{
    my $class = shift;
    my %args  = @_;

    my %attrs;
    my @attrs;
    my $attrs = $args{attributes};
    if (ref($attrs) eq 'ARRAY') {
        %attrs = map { (
            $_->prefix && $_->prefix ne 'xmlns' ?
                sprintf('%s:%s', $_->prefix, $_->localname || '') :
                $_->localname || ''
            , $_->getData
        ) } @$attrs;
        @attrs = map { $_->getName } @$attrs;
    } elsif (ref($attrs) eq 'HASH') {
        %attrs = %$attrs;
        @attrs = keys %$attrs;
    } else {
        die "'attributes' must be an arrayref of XML::LibXML::Attr objects, or a hashref of scalars";
    }

    return bless {
        %attrs,
        _attributes => \@attrs,
        _content => $args{content},
    }, $class;
}

sub attributes
{
    my $self = shift;
    return wantarray ? @{$self->{_attributes}} : $self->{_attributes};
}

sub toString
{
    my $self = shift;
    return (defined $self->{_content} && length $self->{_content}) ?
        $self->{_content} :
        join('', map { $self->{$_} || '' } $self->attributes);
}

1;

__END__

=head1 NAME

XML::RSS::LibXML::MagicElement - Represent A Non-Trivial RSS Element

=head1 SYNOPSIS

  us XML::RS::LibXML::MagicElement;
  my $xml = XML::RSS::LibXML::MagicElement->new(
    content => $textContent,
    attributes => \@attributes
  );

=head1 DESCRIPTION

This module is a handy object that allows users to access non-trivial
RSS elements in XML::RSS style. For example, suppose you have an RSS
feed with an element like the following:

  <channel>
    <title>Example</title>
    <tag attr1="foo" attr2="bar">baz</tag>
    ...
  </channel>

While it is simple to access the title element like this:

  $rss->{channel}->{title};

It was slightly non-trivial for the second tag. With this module, E<lt>tagE<gt>
is parsed as a XML::RSS::LibXML::MagicElement object and then you can access
all the elements like so:

  $rss->{channel}->{tag};  # "baz"
  $rss->{channel}->{tag}->{attr1}; # "foo"
  $rss->{channel}->{tag}->{attr2}; # "bar"

=head1 METHODS

=head2 new

Create a new MagicElement object.

=head2 attributes

Returns the list of attributes associated with this element

=head2 toString

Returns the string representation of this object. 
By default we use the "text content" of the found tag, but for XML::RSS 
compatibility, we use the concatenation of the attributes if no content is
found.

=head1 AUTHOR

Copyright 2005 Daisuke Maki E<lt>dmaki@cpan.orgE<gt>. All rights reserved.

Development partially funded by Brazil, Ltd. E<lt>http://b.razil.jpE<gt>

=cut