XML-All

 view release on metacpan or  search on metacpan

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


my $wrap = sub {
    my $res = Class::InsideOut::register( bless \(my $s), __PACKAGE__ );
    $twig{ $id->($res) } = $_[0];
    bless($res);
};

my $unwrap = sub {
    $twig{$id->($_[0]) || do {
        my $elt = XML::Twig::Elt->new(XML::Twig::PCDATA);
        $elt->_set_pcdata($_[0]);
        return $elt;
    }};
};

sub xml {
    if (ref($_[0]) and ref($_[0])->isa(__PACKAGE__)) {
        my $obj = $twig{$id->(shift(@_))};
        my @children = map { $wrap->($_) } $obj->children(join('', 'xml', map { "[$_]" } @_ ));
        wantarray ? @children : $children[0];
    }

t/1-basic.t  view on Meta::CPAN

@{$xml->[2]} = ();
is($#{$xml->[2]}, -1, 'array clear');

is(join(",", %$xml), "href,/", 'hash fetch');
is($xml->{href}, '/', 'hash fetch elem');
$xml->{class} = 'moose';
is($xml->{class}, 'moose', 'hash store elem');
is($xml, < <link class='moose' href='/'><hr/><div/><b></b><hr/><div/></link> >, 'hash store elem');

$xml->[0] = 123;
is($xml->[0], 123, 'set pcdata');
$xml->[2] = < <b>2</b> >;

is($xml->b, '<b>2</b>', 'selector');
is(($xml->b * 10), 20, 'numify');
is($xml->(), 123, 'pcdata deref');

is($xml->b + <hr/>, < <b>2<hr/></b> >, '+');
$xml += <hr/>;
is($xml->[-1], <hr/>, '+=');

$xml -= <div/>;
$xml -= <b/>;
is($xml, < <link class='moose' href='/'>123<hr/><hr/></link> >, '-');
is($xml - <hr/>, < <link class='moose' href='/'>123</link> >, '-=');



( run in 0.264 second using v1.01-cache-2.11-cpan-454fe037f31 )