support reftext for block IDs

This commit is contained in:
Dietmar Maurer 2016-10-08 13:07:08 +02:00
parent 0e1bf0daf7
commit 459308313d
2 changed files with 9 additions and 3 deletions

View File

@ -65,10 +65,13 @@ sub replace_wiki_xref {
my ($blockid, $text) = @_; my ($blockid, $text) = @_;
my $link = $fileinfo->{blockid_target}->{wiki}->{$blockid}; my $link = $fileinfo->{blockid_target}->{wiki}->{$blockid};
my $reftext = $fileinfo->{reftext}->{wiki}->{$blockid};
die "unable to resolve wiki link (xref:$blockid)\n" die "unable to resolve wiki link (xref:$blockid)\n"
if !defined($link); if !defined($link);
$text = $reftext if !length($text);
return "$link\[$text\]"; return "$link\[$text\]";
} }

View File

@ -83,13 +83,15 @@ sub register_include {
} }
sub register_blockid { sub register_blockid {
my ($filename, $blockid, $env_list) = @_; my ($filename, $blockid, $reftext, $env_list) = @_;
foreach my $e (@$env_list) { foreach my $e (@$env_list) {
my $fn = $fileinfo->{blockid}->{$e}->{$blockid}; my $fn = $fileinfo->{blockid}->{$e}->{$blockid};
die "blockid '$blockid' already defined in $fn" die "blockid '$blockid' already defined in $fn"
if defined($fn); if defined($fn);
$fileinfo->{blockid}->{$e}->{$blockid} = $filename; $fileinfo->{blockid}->{$e}->{$blockid} = $filename;
$fileinfo->{reftext}->{$e}->{$blockid} = $reftext
if defined($reftext);
} }
} }
@ -142,14 +144,15 @@ sub scan_adoc_file {
if ($line =~ m/^\[\[(.*)\]\]\s*$/) { if ($line =~ m/^\[\[(.*)\]\]\s*$/) {
my $blockid = $1; my $blockid = $1;
die "implement me" if $blockid =~m/,/; die "implement me" if $blockid =~m/,/;
register_blockid($filename, $blockid, $env_stack->[-1]); my $reftext = '';
register_blockid($filename, $blockid, $reftext, $env_stack->[-1]);
} }
# fixme: "anchor:" # fixme: "anchor:"
# bibliography anchors # bibliography anchors
if ($line =~ m/\[\[\[([^\]]*)\]\]\]/) { if ($line =~ m/\[\[\[([^\]]*)\]\]\]/) {
my $blockid = $1; my $blockid = $1;
die "implement me" if $blockid =~m/,/; die "implement me" if $blockid =~m/,/;
register_blockid($filename, $blockid, $env_stack->[-1]); register_blockid($filename, $blockid, "[$blockid]", $env_stack->[-1]);
} }
} }
} }