#!/bin/perl -w use strict; use XML::Twig; $|=1; my $TMAX=1; # do not forget to update! print "1..$TMAX\n"; my $doc= read_data(); my $t= XML::Twig->new( ignore_elts => { ignore => 1 }, keep_spaces => 1, ); my $result_file= "test_ignore_elt.res1"; open( RESULT, ">$result_file") or die "cannot create $result_file: $!"; select RESULT; $t->parse( $doc); $t->print; select STDOUT; close RESULT; check_result( $result_file, 1); exit 0; # Not yet implemented # test 2 $doc= read_data(); $t= XML::Twig->new( ignore_elts => { ignore => 'print' }, twig_handlers => { elt => sub { $_->print; } }, keep_spaces => 1, ); $result_file= "test_ignore_elt.res2"; open( RESULT, ">$result_file") or die "cannot create $result_file: $!"; select RESULT; $t->parse( $doc); $t->print; select STDOUT; close RESULT; check_result( $result_file, 2); sub read_data { local $/="\n\n"; my $data= ; $data=~ s{^\s*#.*\n}{}m; # get rid of comments $data=~ s{\s*$}{}s; # remove trailing spaces (and \n) $data=~ s{(^|\n)\s*(\n|$)}{}g; # remove empty lines return $data; }; sub check_result { my( $result_file, $test_no)= @_; # now check result my $expected_result= read_data(); my $result= read_result( $result_file); if( $result eq $expected_result) { print "ok $test_no\n"; } else { print "not ok $test_no\n"; print STDERR "\ntest $test_no:\n", "expected: \n$expected_result\n", "real: \n$result\n"; } } sub read_result { my $file= shift; local $/="\n"; open( RESULT, "<$file") or die "cannot read $file: $!"; my @result= grep {m/\S/} ; close RESULT; unlink $file; return join '', @result; } __DATA__ # doc 1 text text # expected result 1 #doc 2 text text # expected result 2 text text