help-texinfo
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [help-texinfo] Section numbers in filenames


From: Gavin Smith
Subject: Re: [help-texinfo] Section numbers in filenames
Date: Sat, 2 Mar 2019 20:31:16 +0000
User-agent: Mutt/1.5.23 (2014-03-12)

On Tue, Feb 19, 2019 at 07:09:32AM -0800, Mike Gran wrote:
> I had a need to make some plain text documentation where the
> output is split up into multiple files, and I was pleased to find
> that the --split options works for plain text texinfo output.  So
> texinfo would be great, except that is isn't obvious how order the
> output files, since the filenames are the section names.

Hi Mike, I hadn't known that this was a feature, but it does work.  I am 
not that familiar with the code, but I found that running,

  ./texi2any.pl --plaintext --split=node  ../doc/info-stnd.texi -o test

would use the code in tp/Texinfo/Convert/Converter.pm.  Here is a quick 
and dirty change that puts numbers in the file names:


diff --git a/tp/Texinfo/Convert/Converter.pm b/tp/Texinfo/Convert/Converter.pm
index 53a925e..da48fb3 100644
--- a/tp/Texinfo/Convert/Converter.pm
+++ b/tp/Texinfo/Convert/Converter.pm
@@ -565,11 +565,12 @@ sub _node_filename($$)
   return $filename;
 }
 
-sub _set_element_file($$$)
+sub _set_element_file($$$$)
 {
   my $self = shift;
   my $element = shift;
   my $filename = shift;
+  my $file_nr = shift;
 
   if (!defined($filename)) {
     cluck("_set_element_file: filename not defined\n");
@@ -589,7 +590,8 @@ sub _set_element_file($$$)
   if (defined($self->{'destination_directory'}) 
       and $self->{'destination_directory'} ne '') {
     $element->{'out_filename'} = 
-      File::Spec->catfile($self->{'destination_directory'}, $filename);
+      File::Spec->catfile($self->{'destination_directory'},
+        sprintf("%04d", $file_nr) . ' ' . $filename);
   } else {
     $element->{'out_filename'} = $filename;
   }
@@ -675,11 +677,12 @@ sub _set_pages_files($$)
   
     my $top_node_filename = $self->_top_node_filename();
     # first determine the top node file name.
+    my $num = 1;
     if ($self->get_conf('NODE_FILENAMES') and $node_top 
         and defined($top_node_filename)) {
       my ($node_top_element) = $self->_get_element($node_top);
       die "BUG: No element for top node" if (!defined($node_top));
-      $self->_set_element_file($node_top_element, $top_node_filename);
+      $self->_set_element_file($node_top_element, $top_node_filename, $num++);
     }
     my $file_nr = 0;
     my $previous_page;
@@ -706,7 +709,7 @@ sub _set_pages_files($$)
               $node_filename .= '.'.$self->get_conf('NODE_FILE_EXTENSION') 
                 if (defined($self->get_conf('NODE_FILE_EXTENSION')) 
                  and $self->get_conf('NODE_FILE_EXTENSION') ne '');
-              $self->_set_element_file($file_element, $node_filename);
+              $self->_set_element_file($file_element, $node_filename, $num++);
               last;
             }
           }
@@ -716,21 +719,21 @@ sub _set_pages_files($$)
             if ($command) {
               if ($command->{'cmdname'} eq 'top' and !$node_top
                   and defined($top_node_filename)) {
-                $self->_set_element_file($file_element, $top_node_filename);
+                $self->_set_element_file($file_element, $top_node_filename, 
$num++);
               } else {
                 my ($normalized_name, $filename) 
                    = $self->_sectioning_command_normalized_filename($command);
-                $self->_set_element_file($file_element, $filename)
+                $self->_set_element_file($file_element, $filename, $num++)
               }
             } else {
               # when everything else has failed
               if ($file_nr == 0 and !$node_top 
                   and defined($top_node_filename)) {
-                $self->_set_element_file($file_element, $top_node_filename);
+                $self->_set_element_file($file_element, $top_node_filename, 
$file_nr);
               } else {
                 my $filename = $self->{'document_name'} . "_$file_nr";
                 $filename .= $extension;
-                $self->_set_element_file($element, $filename);
+                $self->_set_element_file($element, $filename, $num++);
               }
               $file_nr++;
             }
@@ -740,7 +743,7 @@ sub _set_pages_files($$)
           $filename .= '.'.$self->get_conf('EXTENSION') 
             if (defined($self->get_conf('EXTENSION')) 
                 and $self->get_conf('EXTENSION') ne '');
-          $self->_set_element_file($file_element, $filename);
+          $self->_set_element_file($file_element, $filename, $num++);
           $file_nr++;
         }
       }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]