Data-Edit-Xml-Xref
view release on metacpan or search on metacpan
lib/Data/Edit/Xml/Xref.pm view on Meta::CPAN
}
formatTables($xref, [sort {$$a[0] cmp $$b[0]} @f], # Sort by file name
columns => $columns,
title => qq(Max Zoom In Matches),
head => <<END,
Xref found NNNN file matches on DDDD
END
file =>(fpe(qw(lists maxZoom txt))),
summarize => 1);
dumpFile(fpe(qw(lists maxZoom data)), $xref->maxZoomOut); # Dump the search results
{maxZoomOut => $xref->maxZoomOut, # From multiverse to universe
}
} # reportMaxZoomOut
sub reportTopicDetails($) #P Things that occur once in each file
{my ($xref) = @_; # Cross referencer
my @t;
for my $f(sort @{$xref->inputFiles})
{push @t, [$xref->docType ->{$f}//q(),
$xref->topicIds->{$f}//q(),
$xref->author ->{$f}//q(),
$xref->title ->{$f}//q(),
$f,
];
}
formatTables($xref, \@t,
columns => <<END,
Tag The outermost tag
Id The id on the outermost tag
Author The author of the topic
Title The title of the topic
File The source file name as a relative file name
END
title=>qq(Topics),
head=><<END,
Xref found NNNN topics on DDDD
END
file=>(fpe(qw(lists topics txt))),
summarize=>1);
{} # From multiverse to universe
} # reportTopicDetails
sub reportTopicReuse($) #P Count how frequently each topic is reused
{my ($xref) = @_; # Cross referencer
my %t;
if (my $xrefBookMapRefs = $xref->bookMapRefs)
{for my $f(sort keys %{$xrefBookMapRefs})
{for my $t(sort keys %{$xrefBookMapRefs->{$f}})
{my $file = absFromAbsPlusRel($f, $t);
$t{$file}{$f}++;
}
}
}
for my $t(keys %t) # Eliminate bookmaprefs that are used only once
{if (keys (%{$t{$t}}) <= 1)
{delete $t{$t};
}
}
my @t;
for my $t(keys %t) # Target
{for my $s(keys %{$t{$t}}) # Source
{push @t, [scalar(keys %{$t{$t}}), $t{$t}{$s}, $t, $s];
}
}
my $t = [sort {$a->[0] <=> $b->[0]} # Order report
sort {$a->[2] cmp $b->[2]} @t];
for my $i(keys @$t) # Deduplicate first column from third column
{next unless $i;
my $a = $t->[$i-1];
my $b = $t->[$i];
$b->[0] = '' if $a->[2] eq $b->[2];
}
formatTables($xref, $t,
columns => <<END,
Reuse The number of times the target topic is reused over all topics
Count The number of times the target topic is reused in the source topic
Target The topic that is being reused == the target of reuse
Source The topic that is referencing the reused topic
END
title=>qq(Topic Reuses),
head=><<END,
Xref found NNNN topics that are currently being reused on DDDD
END
file=>(fpe(qw(lists topicReuse txt))),
zero=>1, # Reuse is very unlikely because the matching criteria is the MD5 sum
summarize=>1);
{} # From multiverse to universe
} # reportTopicReuse
# References might need fixing either because they are invalid or because we are
# deguidizing
sub reportFixRefs($) #P Report of hrefs that need to be fixed
{my ($xref) = @_; # Cross referencer
my @r;
if (my $xrefFixRefs = $xref->fixRefs)
{for my $f(sort keys %{$xrefFixRefs})
{for my $h(sort keys %{$xrefFixRefs->{$f}})
{push @r, [$h, $f];
}
}
}
formatTables($xref, \@r,
columns => <<END,
Reference The reference to be fixed
Source The topic that contains the reference
END
title=>qq(References to fix),
( run in 2.282 seconds using v1.01-cache-2.11-cpan-0bb4e1dffa6 )