changeset 13122:f80273b38cc4

more fixes to __makeinfo__ * __makeinfo__.m: fix handling of multiple @seealso macros and a few style fixes.
author Carlo de Falco <kingcrimson@tiscali.it>
date Sun, 11 Sep 2011 11:40:22 +0200
parents 390add500107
children 6efa1a691713
files scripts/help/__makeinfo__.m
diffstat 1 files changed, 12 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/help/__makeinfo__.m	Sat Sep 10 12:08:15 2011 +0200
+++ b/scripts/help/__makeinfo__.m	Sun Sep 11 11:40:22 2011 +0200
@@ -57,30 +57,32 @@
 ## The optional output argument @var{status} contains the exit status of the
 ## @code{makeinfo} program as returned by @code{system}.
 
-function [retval, status] = __makeinfo__ (text, output_type = "plain text", see_also = [])
+function [retval, status] = __makeinfo__ (text, output_type = "plain text", fsee_also)
 
   ## Check input
   if (nargin < 1 || nargin > 3)
     print_usage ();
   endif
 
-  if (!ischar (text))
+  if (! ischar (text))
     error ("__makeinfo__: first input argument must be a string");
   endif
 
-  if (!ischar (output_type))
+  if (! ischar (output_type))
     error ("__makeinfo__: second input argument must be a string");
   endif
 
-  if (isempty (see_also))  
+  if (nargin < 3)  
     if (strcmpi (output_type, "plain text"))
-      see_also = @simple_see_also;
+      fsee_also = @(T) strcat ...
+          ("\nSee also:", sprintf (" %s,", T{:})(1:end-1), "\n");
     else    
-      see_also = @simple_see_also_with_refs;
+      fsee_also = @(T) strcat ...
+          ("\nSee also:", sprintf (" @ref{%s},", T{:})(1:end-1), "\n");
     endif
   endif
 
-  if (!isa (see_also, "function_handle"))
+  if (! isa (fsee_also, "function_handle"))
     error (["__makeinfo__: third input argument must ", ...
             "be the empty matrix, or a function handle"]);
   endif
@@ -94,8 +96,8 @@
   see_also_pat = '@seealso *\{([^}]*)\}';
   args = regexp (text, see_also_pat, 'tokens');
   for ii = 1:numel (args)
-    expanded = feval (see_also, strtrim (strsplit (args{ii}{:}, ',', true)));
-    text = regexprep (text, see_also_pat, expanded);
+    expanded = fsee_also (strtrim (strsplit (args{ii}{:}, ',', true)));
+    text = regexprep (text, see_also_pat, expanded, 'once');
   endfor
 
   ## Handle @nospell macro
@@ -113,7 +115,7 @@
   unwind_protect
     ## Write Texinfo to tmp file
     template = "octave-help-XXXXXX";
-    [fid, name, msg] = mkstemp (fullfile (P_tmpdir, template), true);
+    [fid, name] = mkstemp (fullfile (P_tmpdir, template), true);
     if (fid < 0)
       error ("__makeinfo__: could not create temporary file");
     endif
@@ -142,16 +144,6 @@
   end_unwind_protect
 endfunction
 
-function expanded = simple_see_also_with_refs (args)
-  expanded = strcat ("\nSee also:", sprintf (" @ref{%s},", args {:}));
-  expanded = strcat (expanded (1:end-1), "\n\n");
-endfunction
-
-function expanded = simple_see_also (args)
-  expanded = strcat ("\nSee also:", sprintf (" %s,", args {:}));
-  expanded = strcat (expanded (1:end-1), "\n\n");
-endfunction
-
 ## No test needed for internal helper function.
 %!assert (1)