This file is indexed.

/usr/share/perl5/MKDoc/XML/TreePrinter.pm is in libmkdoc-xml-perl 0.75-4.

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
# -------------------------------------------------------------------------------------
# MKDoc::XML::TreePrinter
# -------------------------------------------------------------------------------------
# Author : Jean-Michel Hiver.
# Copyright : (c) MKDoc Holdings Ltd, 2003
#
# This module is the counterpart of MKDoc::XML::TreePrinter. It turns an XML
# tree back into a string.
#
# This module is distributed under the same license as Perl itself.
# -------------------------------------------------------------------------------------
package MKDoc::XML::TreePrinter;
use warnings;
use strict;


##
# $class->process (@nodes);
# ----------------------------
# Does the stuff.
##
sub process
{
    my $class  = shift;
    my @nodes  = @_;
    my @res = ();
    
    foreach my $node (@nodes)
    {
        ref $node or do {
            push @res, $node;
            next;
        };

        $node->{_tag} =~ /\~pi/ and do {
            push @res, "<?$node->{text}?>";
            next;
        };

        $node->{_tag} =~ /\~declaration/ and do {
            push @res, "<!$node->{text}>";
            next;
        };

        $node->{_tag} =~ /\~comment/ and do {
            push @res, "<!--" . $node->{text} . "-->";
            next;
        };

        my $tag   = $node->{_tag};
        my %att   = map { $_ => _encode_quot ($node->{$_}) } grep !/^_/, keys %{$node};
        my $attr  = join " ", map { "$_=\"$att{$_}\"" } sort keys %att;
        my $open  = $node->{_open};
        my $close = $node->{_close};
        
        $open && $close && do {
            if ($attr) { push @res, "<$tag $attr />" }
            else       { push @res, "<$tag />"       }
            next;
        };
        
        my $open_tag  = $attr ? "<$tag $attr>" : "<$tag>";
        my $close_tag = "</$tag>";
        my @desc      = $node->{_content} ? @{$node->{_content}} : ();
        
        my $res = $open_tag . $class->process (@desc) . $close_tag;
        push @res, $res;
        next;
    };

    return join '', @res;
}


sub _encode_quot
{
    my $res = shift;
    return '' unless (defined $res);

    $res =~ s/\"/\&quot\;/g;
    return $res;
}


1;


__END__


=head1 NAME

MKDoc::XML::TreePrinter - Builds XML data from a parsed tree


=head1 SYNOPSIS

  my $xml_data = MKDoc::XML::TreePrinter->process_data (@top_nodes);


=head1 SUMMARY

L<MKDoc::XML::TreePrinter> takes trees which are produced by
L<MKDoc::XML::TreeBuilder> to turn a parsed tree back into XML data. This means
you can parse some stuff using L<MKDoc::TreeBuilder>, fiddle around with the
tree, and then get the result back as XML data. 


=head1 AUTHOR

Copyright 2003 - MKDoc Holdings Ltd.

Author: Jean-Michel Hiver

This module is free software and is distributed under the same license as Perl
itself. Use it at your own risk.


=head1 SEE ALSO

L<MKDoc::XML::TreeBuilder>

=cut