octave-maintainers
[Top][All Lists]
Advanced

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

Re: [changeset] Adapted munge-texi to expand @seealso commands to texinf


From: Thorsten Meyer
Subject: Re: [changeset] Adapted munge-texi to expand @seealso commands to texinfo references, tex error
Date: Sun, 26 Oct 2008 12:02:54 +0100
User-agent: Mozilla-Thunderbird 2.0.0.16 (X11/20080724)

Thorsten Meyer wrote:
> Hi,
> 
> the attached changeset adapts munge-texi to expand @seealso commands to
> texinfo references (@address@hidden, ...}) in the documentation.
oops, I forgot the attachement.

Here it is.

regards

Thorsten
# HG changeset patch
# User Thorsten Meyer <address@hidden>
# Date 1225015856 -3600
# Node ID 480e07987aa8612f33be5d07798c7e568cfcee56
# Parent  2c1ba965b486994c619a508e0fb7c12df473a739
Adapted munge-texi to expand @seealso commands to texinfo references

diff -r 2c1ba965b486 -r 480e07987aa8 doc/ChangeLog
--- a/doc/ChangeLog     Thu Oct 23 16:01:06 2008 -0400
+++ b/doc/ChangeLog     Sun Oct 26 11:10:56 2008 +0100
@@ -1,3 +1,7 @@
+2008-10-25  Thorsten Meyer <address@hidden>
+        * interpreter/munge-texi.cc: adapted to expand @seealso{}
+          commands to texinfo references.
+          
 2008-10-22  David Bateman  <address@hidden>
 
        * interprter/plot.txi: Add documentation for error bar series.
diff -r 2c1ba965b486 -r 480e07987aa8 doc/interpreter/munge-texi.cc
--- a/doc/interpreter/munge-texi.cc     Thu Oct 23 16:01:06 2008 -0400
+++ b/doc/interpreter/munge-texi.cc     Sun Oct 26 11:10:56 2008 +0100
@@ -70,8 +70,80 @@
 
   int c;
   while ((c = is.get ()) != EOF && c != doc_delim)
-    doc += (char) c;
+    {
+      // expand @seealso commands to texinfo references
+      if (c == '@')
+        {
+          char buf[16]; // buffer for text processing
+          int i = 0;
+          buf[i++] = (char) c;
+          
+          if ((   buf[i++] = (char) is.get ()) == 's'  
+              && (buf[i++] = (char) is.get ()) == 'e'
+              && (buf[i++] = (char) is.get ()) == 'e'
+              && (buf[i++] = (char) is.get ()) == 'a'
+              && (buf[i++] = (char) is.get ()) == 'l'
+              && (buf[i++] = (char) is.get ()) == 's'
+              && (buf[i++] = (char) is.get ()) == 'o'
+              && (buf[i++] = (char) is.get ()) == '{')
+            {
+              doc += "@seealso{";
+              
+              bool first = true;
+              
+              // process @seealso parameters
+              while ((c = is.get ()) != EOF
+                     && c != doc_delim
+                     && c != '}') 
+                {
+                  // ignore whitespace and delimiters
+                  while (   c == ' ' 
+                         || c == '\t'
+                         || c == '\r'
+                         || c == '\n'
+                         || c == ',')
+                    {
+                      c = is.get ();
+                    }
+                    
+                  // test for end of @seealso
+                  if (c == '}') 
+                    break;
+                  
+                  // get function name
+                 std::string function_name;
+                  do 
+                    function_name += (char) c;
+                  while ((c = is.get ()) != EOF
+                          && c != doc_delim
+                          && c != ' '
+                          && c != '\t'
+                          && c != '\r'
+                          && c != '\n'
+                          && c != ','
+                          && c != '}');
+                  if (first)
+                    first = false;
+                  else
+                    doc += ", ";
+                  doc += "@ref{doc-" + function_name + ",," + function_name + 
"}";
 
+                  // test for end of @seealso
+                  if (c == '}') 
+                    break;
+                }
+              if (c == '}')
+                doc += (char) c;
+            }
+          else
+            {
+              for (int j = 0; j < i; j++)
+                doc += buf[j];
+            }
+        }
+      else
+        doc += (char) c;
+    }
   return doc;
 }
 
@@ -149,9 +221,9 @@
 
              char buf[16];
              int i = 0;
-             buf[i++] = c;
+             buf[i++] = (char) c;
 
-             if ((buf[i++] = (char) is.get ()) == 'D'
+             if ((   buf[i++] = (char) is.get ()) == 'D'
                  && (buf[i++] = (char) is.get ()) == 'O'
                  && (buf[i++] = (char) is.get ()) == 'C'
                  && (buf[i++] = (char) is.get ()) == 'S'

reply via email to

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