Data-Edit-Xml-Xref
view release on metacpan or search on metacpan
lib/Data/Edit/Xml/Xref.pm view on Meta::CPAN
}
if ($xref->allowUniquePartialMatches && $attr !~ m(\Aconref)s) # Partial matching - i.e ignoring the stuff to the right of the # in the reference sometimes produces a unique result.
{return &$fixOnePartialDitaRef($ref =~ s(#.*\Z) ()rs); # Try to resolve reference as a partial re
}
undef # Failed
};
my $fixRelRef = sub # Attempt to fix a reference broken by relocation
{my ($R, $rest) = split m(#)s, $ref, 2; # Get referenced file name
if ($R)
{my $r = fne($R); # Href file base name
if (my $F = $xref->baseFiles->{$r}) # Relocated else where
{my @targets = sort keys(%$F); # Relocation targets
if (@targets == 1) # Just one such relocation
{my $f = relFromAbsAgainstAbs($targets[0], $sourceFile); # Link to it
if ($f ne $R)
{my $newLink; # Fix if the target is else where
if ($rest) # Link has more than one component
{$node->set($attr=>($newLink = $f.q(#).$rest)); # Reset link
lib/Data/Edit/Xml/Xref.pm view on Meta::CPAN
my @bad; my @good; # Good and bad guid hrefs
for my $file(sort keys %{$xref->guidHrefs}) # Each input file which will be absolute
{my $sourceTopicId = $xref->topicIds->{$file};
for my $href(sort keys %{$xref->guidHrefs->{$file}}) # Each href in the file which will start with guid
{my ($tag, $lineLocation) = @{$xref->guidHrefs->{$file}{$href}}; # Tag of node and location in source file of node doing the referencing
# 2019.08.29 The following line does not appear to be needed - it is happening to late to affect anything
$xref->fixRefs->{$file}{$href}++ unless $xref->fixRefs->{$file}{$href}; # Avoid double counting - all guid hrefs will be fixed if we are fixing hrefs as both good and bad will fail.
if ($href =~ m(#)) # Href with #
{my ($guid, $topic, $id) = split m(#|\/), $href, 3; # Guid, topic, remainder
my $targetFile = $guidToFile{$guid}; # Locate file defining guid
if (!defined $targetFile) # No definition of this guid
{push @bad, # Report missing guid
["No such guid defined", $tag, $href, $lineLocation, q(),
$sourceTopicId, $targetFile, $file];
next;
}
my $targetFileId = $xref->topicIds->{$targetFile} // ''; # Actual id in target file
lib/Data/Edit/Xml/Xref.pm view on Meta::CPAN
};
my @m;
for my $n(sort keys %o) # Layout map entries
{next if $n =~ m(\Atopic_type\Z)i;
my $t = &$makeNavTitle($n);
push @m, qq(<subjectHead id="$n" navtitle="$t">);
my %c; # Normalize all the othermeta
for my $content(sort keys $o{$n}->%*)
{for my $c(split m(\s+)s, $content)
{$c{$c}++
}
}
for my $c(sort keys %c) # Write the normalized othermeta
{my $t = &$makeNavTitle($c);
push @m, qq(<subjectdef keys="$c" navtitle="$t"/>);
}
push @m, qq(</subjectHead>);
}
( run in 0.637 second using v1.01-cache-2.11-cpan-71847e10f99 )