XML-Spice

 view release on metacpan or  search on metacpan

lib/XML/Spice.pm  view on Meta::CPAN

    my $WANT_PRETTY = $PRETTY_PRINT && $TIDY_LOADED;

    return $chunk->{cached} if exists $chunk->{cached} && !$WANT_PRETTY;

    sub _escape_attr {
        my ($val) = @_;
        $val =~ s/'/'/g;
        return $val;
    }

    sub _escape_cdata {
        my ($val) = @_;
        $val =~ s/&/&/g;
        $val =~ s/</&lt;/g;
        $val =~ s/>/&gt;/g;
        $val =~ s/"/&quot;/g;
        $val =~ s/([^\x20-\x7E])/'&#' . ord($1) . ';'/ge;
        return $val;
    }

    sub _serialise {

lib/XML/Spice.pm  view on Meta::CPAN

            if (ref $thing eq "ARRAY") {
                $xml .= $chunk->_serialise(@$thing);
            }

            elsif (ref $thing eq "XML::Spice::Chunk") {
                $xml .= $thing->_xml;
            }

            else {
                next if $thing eq "";
                $xml .= _escape_cdata($thing);
            }
        }

        return $xml;
    }

    my $subxml = $chunk->_serialise(@{$chunk->{sub}}) if exists $chunk->{sub};

    my $xml = "<" . $chunk->{tag};

t/10-generation.t  view on Meta::CPAN

        sub {
            x("escapes", '&<>"');
        },

    "numeric escaping",
    qq(<escapes>).join('', (map { sprintf '&#%d;', $_ } (0x20 .. 0xd7ff))).qq(</escapes>),
        sub {
            x("escapes",  join '', (map { chr($_) } (0x20 .. 0xd7ff)));
        },

    "0 as cdata works",
    qq(<foo>0</foo>),
        sub {
            x("foo", 0);
        },
);

while(@tests > 1) {
    my $desc = shift @tests;
    my $xml = shift @tests;
    my $gen = shift @tests;



( run in 2.256 seconds using v1.01-cache-2.11-cpan-995e09ba956 )