]> git.proxmox.com Git - pve-docs.git/blobdiff - asciidoc-pve.in
asciidoc-pve.in: cleanup for code reuse
[pve-docs.git] / asciidoc-pve.in
index ab6edef67e21afe580fa097bccfd9f610ac1f687..b578556cda41883b12f0f47d8e1f8d4d41e03f04 100644 (file)
@@ -61,6 +61,11 @@ sub pop_environment {
     }
 }
 
+sub cleanup {
+
+    # TODO: anything ?
+}
+
 sub replace_wiki_xref {
     my ($blockid, $text) = @_;
 
@@ -72,11 +77,23 @@ sub replace_wiki_xref {
 
     $text = $reftext if !length($text);
 
+    die "xref: no text for '$blockid'\n" if !$text;
+
     return "$link\[$text\]";
 }
 
+sub replace_xref {
+    my ($env, $blockid, $text) = @_;
+
+    if ($env eq 'wiki') {
+       return replace_wiki_xref($blockid, $text);
+    } else {
+       die "implement me";
+    }
+}
+
 sub prepare_adoc_file {
-    my ($filename, $attributes) = @_;
+    my ($target_env, $filename, $attributes) = @_;
 
     return if $prepared_files->{$filename};
 
@@ -117,13 +134,14 @@ sub prepare_adoc_file {
        if ($line =~ m/^include::(\S+)(\[.*\]\s*)$/) {
            my ($fn, $rest) = ($1, $2);
            print "INCLUDE: $fn\n";
-           my $new_fn = prepare_adoc_file($fn, $attributes);
+           my $new_fn = prepare_adoc_file($target_env, $fn, $attributes);
            $line = "include::${new_fn}$rest\n";
        }
 
        # fix xrefs
-       $line =~ s/xref:([^\s\[\]]+)\[([^\]]*)\]/replace_wiki_xref($1,$2)/ge;
+       $line =~ s/xref:([^\s\[\]]+)\[([^\]]*)\]/replace_xref(${target_env},$1,$2)/ge;
 
+       $line =~ s/<<([^\s,\[\]]+)(?:,(.*?))?>>/replace_xref(${target_env},$1,$2)/ge;
 
        print $outfh $line;
     }
@@ -131,11 +149,11 @@ sub prepare_adoc_file {
     return $outfilename;
 }
 
-sub compile_wiki {
+sub compile_asciidoc {
+    my ($env) = @_;
 
     my $verbose;
     my $outfile;
-    my $target_env;
 
     GetOptions ("outfile=s" => \$outfile,
                "verbose"   => \$verbose) or
@@ -147,22 +165,22 @@ sub compile_wiki {
     scalar(@ARGV) == 0 or
        die "too many arguments...\n";
 
-    my $env = 'wiki';
+    if ($env eq 'wiki') {
 
 
+    } else {
+       die "unknown environment '$env'";
+    }
+
     my $title = $fileinfo->{titles}->{$env}->{$infile} or
        die "unable to get title for '$infile'\n";
 
-
     print "compile: $title\n";
 
     my $leveloffset = 0;
 
-    if ($clicmd eq 'compile-wiki-chapter') {
-       $leveloffset = 0;
-    } elsif ($clicmd eq 'compile-wiki-section') {
-       $leveloffset = -1;
-    }
+    my $doctype = $fileinfo->{doctype}->{$env}->{$infile} // 0;
+    $leveloffset = - $doctype;
 
     my $date = `date`;
     chomp $date;
@@ -176,6 +194,10 @@ sub compile_wiki {
        revnumber => $release,
     };
 
+    if (!($env eq 'wiki') || ($env ne 'manvolnum')) {
+       $attributes->{toc} = undef;
+    }
+
     my $cmd = ['asciidoc', '-s'];
 
     foreach my $key (keys %$attributes) {
@@ -197,7 +219,7 @@ sub compile_wiki {
 
     push @$cmd, '--out-file', $outfile;
 
-    my $new_infile = prepare_adoc_file($infile, $attributes);
+    my $new_infile = prepare_adoc_file($env, $infile, $attributes);
 
     push @$cmd, $new_infile;
 
@@ -207,13 +229,13 @@ sub compile_wiki {
        die "aciidoc error";
 }
 
-if ($clicmd eq 'compile-wiki-chapter' ||
-    $clicmd eq 'compile-wiki-section') {
 
-    eval { compile_wiki(); };
+if ($clicmd eq 'compile-wiki') {
+
+    eval { compile_asciidoc('wiki'); };
     my $err = $@;
 
-    # cleanup
+    cleanup();
 
     die $err if $err;