X-Git-Url: https://git.proxmox.com/?p=pve-docs.git;a=blobdiff_plain;f=scan-adoc-refs;h=3885348fc7fc9762cc74c8366b39d9a722e2b8d7;hp=6563c3534c10041e5f28e050698a13a54a4e582e;hb=edc73653fb32890096a3b2fa15a7a95ff22e0882;hpb=0142692aedc3579330722fe8217bc5d66790cd3d diff --git a/scan-adoc-refs b/scan-adoc-refs index 6563c35..3885348 100755 --- a/scan-adoc-refs +++ b/scan-adoc-refs @@ -89,6 +89,23 @@ sub register_blockid { } } +sub register_title { + my ($filename, $env, $doctype, $title) = @_; + + # fixme: what about other macros? + $title =~ s/\{pve\}/Proxmox VE/g; + $title =~ s!http://\S+\[(.*?)\]!$1!g; + + $fileinfo->{titles}->{$env}->{$filename} = $title; + + if (defined($doctype)) { + $fileinfo->{doctype}->{$env}->{$filename} = $doctype; + } else { + die "unable to change title (no doctype)" + if !defined($fileinfo->{doctype}->{$env}->{$filename}); + } +} + sub scan_adoc_file { my ($filename) = @_; @@ -123,17 +140,13 @@ sub scan_adoc_file { next if defined($title); if ($line =~ m/^=====+$/) { - $fileinfo->{titles}->{$e}->{$filename} = $env_last_line->{$e}; - $fileinfo->{doctype}->{$e}->{$filename} = 0; + register_title($filename, $e, 0, $env_last_line->{$e}); } elsif ($line =~ m/^-----+$/) { - $fileinfo->{titles}->{$e}->{$filename} = $env_last_line->{$e}; - $fileinfo->{doctype}->{$e}->{$filename} = 1; + register_title($filename, $e, 1, $env_last_line->{$e}); } elsif ($line =~ m/^= +(\S.*?)( +=)?$/) { - $fileinfo->{titles}->{$e}->{$filename} = $1; - $fileinfo->{doctype}->{$e}->{$filename} = 0; + register_title($filename, $e, 0, $1); } elsif ($line =~ m/^== +(\S.*?)( +==)?$/) { - $fileinfo->{titles}->{$e}->{$filename} = $1; - $fileinfo->{doctype}->{$e}->{$filename} = 1; + register_title($filename, $e, 1, $1); } $env_last_line->{$e} = $line; @@ -150,6 +163,10 @@ sub scan_adoc_file { if !defined($title); $fileinfo->{toplevel}->{$e}->{$filename} = 1; } + } elsif ($key eq 'title') { + foreach my $e (@{$env_stack->[-1]}) { + register_title($filename, $e, undef, $value); + } } } @@ -206,7 +223,6 @@ foreach my $e (@$start_env) { my $fn = resolve_link_target($e, $blockid_hash->{$blockid}); if ($e eq 'wiki') { my $title = $fileinfo->{titles}->{$e}->{$fn}; - $title =~ s/\{pve\}/Proxmox VE/g; $title =~ s/\s/_/g; die "found not title for '$fn' in env '$e'" if !$title; $fileinfo->{blockid_target}->{$e}->{$blockid} = "link:/wiki/$title#$blockid";