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.645 second using v1.01-cache-2.11-cpan-454fe037f31 )