XML-Parsepp-Testgen
view release on metacpan or search on metacpan
lib/XML/Parsepp/Testgen.pm view on Meta::CPAN
);
my %HSub;
my $replm = q!s{([\x00-\x1f\[\]])}{sprintf('&<%02x>', ord($1))}xmsge!;
my $i = 0;
for my $hl (@HList) { $i++;
my $func_body = '';
my @vlist = split m{,}xms, $hl->[2] =~ s{[\s\(\)]}''xmsgr;
for my $vl (@vlist) {
$vl = '$'.$vl unless $vl =~ m{\A \@}xms;
}
$func_body .= "{ # ".sprintf('%2d', $i).". ".sprintf('%-15s', $hl->[0])." ".$hl->[2]."\n";
$func_body .= " my (".join(', ', @vlist).") = \@_;\n\n";
my $has_array = 0;
my $j = 0;
for my $vl (@vlist) { $j++;
lib/XML/Parsepp/Testgen.pm view on Meta::CPAN
push @HParam, $hl->[0], $handler;
}
my $XmlParser = XML::Parser->new or die "Error-0060: Can't create XML::Parser -> new";
$XmlParser->setHandlers(@HParam);
my @current;
my @RList;
for (split m{\n}xms, $xml) {
if (m{\A \s* \#! (.*) \z}xms) {
my $remark = $1;
if ($remark =~ m{\A \s* =+ \s* \z}xms) {
push @RList, { xml => [@current] } if @current;
@current = ();
}
}
else {
s{\s+ \z}''xms;
lib/XML/Parsepp/Testgen.pm view on Meta::CPAN
for my $res (@result) {
my $word = !defined($res) ? '!!!!' : $res =~ m{\A (\w{4}) }xms ? $1 : '????';
$HitCount{$word}++;
}
}
my $result = '';
open my $ofh, '>', \$result or die "Error-0090: Can't open > '\\\$result' because $!";
for (split m{\n}xms, $template) {
if (m{\A \s* %}xms) {
m{\A %include \s+ (\w+) \z}xms
or die "Error-0100: Can't parse %include from '$_'";
my $subject = $1;
if ($subject eq 'test_more') {
say {$ofh} "use Test::More tests => $TestCount;"
}
elsif ($subject eq 'handlers') {
lib/XML/Parsepp/Testgen.pm view on Meta::CPAN
open my $ofh, '>', \$result or die "Error-0220: Can't open > '\\\$result' because $!";
say {$ofh} '#! Testdata for XML::Parsepp';
say {$ofh} '#! Ver 0.01';
for my $i (0..$#gr_list) {
my $text = $gr_list[$i];
say {$ofh} '#! ===' unless $i == 0;
my @lines = split m{\n}xms, $text;
my $first = shift @lines;
unless (defined $first) {
die "Error-0230: Too few elements in lines";
}
unless ($first eq '$XmlParser,') {
die "Error-0240: found first line = >>$first<<, but expected >>\$XmlParser,<<";
}
( run in 1.401 second using v1.01-cache-2.11-cpan-71847e10f99 )