Mercurial > octave-nkf
changeset 8768:e0fbf17a17bb
__makeinfo__.m: rename from makeinfo.m
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 16 Feb 2009 17:01:17 -0500 |
parents | 026c6732ec7a |
children | a186c5b4f264 |
files | scripts/ChangeLog scripts/help/Makefile.in scripts/help/__additional_help_message__.m scripts/help/__makeinfo__.m scripts/help/__strip_html_tags__.m scripts/help/get_first_help_sentence.m scripts/help/help.m scripts/help/lookfor.m scripts/help/makeinfo.m scripts/help/print_usage.m |
diffstat | 10 files changed, 185 insertions(+), 178 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/ChangeLog Mon Feb 16 16:44:55 2009 -0500 +++ b/scripts/ChangeLog Mon Feb 16 17:01:17 2009 -0500 @@ -1,3 +1,12 @@ +2009-02-16 John W. Eaton <jwe@octave.org> + + * help/__makeinfo__.m: Rename from help/makeinfo.m. Delete tmp file. + * help/Makefile.in (SOURCES): Add __makeinfo__.m, delete makeinfo.m. + * help/get_first_help_sentence.m, help/help.m, help/lookfor.m, + help/print_usage.m: Call __makeinfo__ instead of makeinfo. + * help/__strip_html_tags__.m, help/__additional_help_message__.m: + Doc fix. + 2009-02-16 Ben Abbott <bpabbott@mac.com> * plot/shading.m: No new figure windows for the demos.
--- a/scripts/help/Makefile.in Mon Feb 16 16:44:55 2009 -0500 +++ b/scripts/help/Makefile.in Mon Feb 16 17:01:17 2009 -0500 @@ -34,13 +34,13 @@ SOURCES = \ __additional_help_message__.m \ + __makeinfo__.m \ __strip_html_tags__.m \ doc.m \ gen_doc_cache.m \ get_first_help_sentence.m \ help.m \ lookfor.m \ - makeinfo.m \ print_usage.m \ type.m \ which.m
--- a/scripts/help/__additional_help_message__.m Mon Feb 16 16:44:55 2009 -0500 +++ b/scripts/help/__additional_help_message__.m Mon Feb 16 17:01:17 2009 -0500 @@ -15,11 +15,8 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} __additional_help_message__ () -## Return additional help message. -## -## This is an internal function and should not be used directly. -## @seealso{suppress_verbose_help_message} +## @deftypefn {Function File} {} __additional_help_message__ () +## Undocumented internal function. ## @end deftypefn function msg = __additional_help_message__ ()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/help/__makeinfo__.m Mon Feb 16 17:01:17 2009 -0500 @@ -0,0 +1,161 @@ +## Copyright (C) 2009 Søren Hauberg +## +## This program is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {[@var{retval}, @var{status}] =} __makeinfo__ (@var{text}, @var{output_type}) +## @deftypefnx{Function File} {[@var{retval}, @var{status}] =} __makeinfo__ (@var{text}, @var{output_type}, @var{see_also}) +## Undocumented internal function. +## @end deftypefn + +## Run @code{makeinfo} on a given text. +## +## The string @var{text} is run through the @code{__makeinfo__} program +## to generate output in various formats. This string must contain valid +## Texinfo formatted text. +## +## The @var{output_type} selects the format of the output. This can be either +## @t{"html"}, @t{"texinfo"}, or @t{"plain text"}. By default this is +## @t{"plain text"}. If @var{output_type} is @t{"texinfo"}, the @t{@@seealso} +## macro is expanded, but otherwise the text is unaltered. +## +## If the optional argument @var{see_also} is present, it is used to expand the +## Octave specific @t{@@seealso} macro. This argument must be a function handle, +## that accepts a cell array of strings as input argument (each elements of the +## array corresponds to the arguments to the @t{@@seealso} macro), and return +## the expanded string. If this argument is not given, the @t{@@seealso} macro +## will be expanded to the text +## +## @example +## See also: arg1, arg2@, ... +## @end example +## +## @noindent +## for @t{"plain text"} output, and +## +## @example +## See also: @@ref@{arg1@}, @@ref@{arg2@}, ... +## @end example +## +## @noindent +## otherwise. +## +## 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 = []) + + ## Check input + if (nargin == 0) + print_usage (); + endif + + if (!ischar (text)) + error ("__makeinfo__: first input argument must be a string"); + endif + + if (!ischar (output_type)) + error ("__makeinfo__: second input argument must be a string"); + endif + + ## Define the @seealso macro + if (isempty (see_also)) + if (strcmpi (output_type, "plain text")) + see_also = @simple_see_also; + else + see_also = @simple_see_also_with_refs; + endif + endif + + if (!isa (see_also, "function_handle")) + error ("__makeinfo__: third input argument must be the empty matrix, or a function handle"); + endif + + ## It seems like makeinfo sometimes gets angry if the character on a line is + ## a space, so we remove these. + text = strrep (text, "\n ", "\n"); + + ## Handle @seealso macro + SEE_ALSO = "@seealso"; + start = strfind (text, SEE_ALSO); + if (!isempty (start)) + if (start == 1 || (text (start-1) != "@")) + bracket_start = find (text (start:end) == "{", 1); + stop = find (text (start:end) == "}", 1); + if (!isempty (stop) && !isempty (bracket_start)) + stop += start - 1; + bracket_start += start - 1; + else + bracket_start = start + length (SEE_ALSO); + stop = find (text (start:end) == "\n", 1); + if (isempty (stop)) + stop = length (text); + else + stop += start - 1; + endif + endif + see_also_args = text (bracket_start+1:(stop-1)); + see_also_args = strtrim (cellstr (split (see_also_args, ","))); + expanded = see_also (see_also_args); + text = strcat (text (1:start-1), expanded, text (stop+1:end)); + endif + endif + + if (strcmpi (output_type, "texinfo")) + status = 0; + retval = text; + return; + endif + + ## Create the final TeXinfo input string + text = sprintf ("\\input texinfo\n\n%s\n\n@bye\n", text); + + unwind_protect + ## Write Texinfo to tmp file + [fid, name, msg] = mkstemp ("octave_help_XXXXXX", true); + fwrite (fid, text); + fclose (fid); + + ## Take action depending on output type + switch (lower (output_type)) + case "plain text" + cmd = sprintf ("%s --no-headers --no-warn --force --no-validate %s", + makeinfo_program (), name); + case "html" + cmd = sprintf ("%s --no-headers --html --no-warn --no-validate --force %s", + makeinfo_program (), name); + otherwise + error ("__makeinfo__: unsupported output type: '%s'", output_type); + endswitch + + ## Call makeinfo + [status, retval] = system (cmd); + + unwind_protect_cleanup + if (exist (name, "file")) + delete (name); + endif + end_unwind_protect +endfunction + +function expanded = simple_see_also (args) + expanded = strcat ("\nSee also:", sprintf (" %s,", args {:})); + expanded = strcat (expanded (1:end-1), "\n\n"); +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
--- a/scripts/help/__strip_html_tags__.m Mon Feb 16 16:44:55 2009 -0500 +++ b/scripts/help/__strip_html_tags__.m Mon Feb 16 17:01:17 2009 -0500 @@ -16,12 +16,12 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{text}, @var{status}] =} __strip_html_tags__ (@var{html_text}) -## This function removes html tags from a text. This is used as a simple -## html-to-text function. -## -## This is an internal function and should not be used directly. +## Undocumented internal function. ## @end deftypefn +## Remove HTML tags from text. This is used as a simple HTML-to-text +## function. + function [text, status] = __strip_html_tags__ (html_text) start = find (html_text == "<"); stop = find (html_text == ">");
--- a/scripts/help/get_first_help_sentence.m Mon Feb 16 16:44:55 2009 -0500 +++ b/scripts/help/get_first_help_sentence.m Mon Feb 16 17:01:17 2009 -0500 @@ -133,7 +133,7 @@ endif ## Run makeinfo to generate plain text - [help_text, status] = makeinfo (help_text, "plain text"); + [help_text, status] = __makeinfo__ (help_text, "plain text"); ## Extract first line with plain text method. retval = first_sentence_plain_text (help_text, max_len);
--- a/scripts/help/help.m Mon Feb 16 16:44:55 2009 -0500 +++ b/scripts/help/help.m Mon Feb 16 17:01:17 2009 -0500 @@ -59,7 +59,7 @@ case "plain text" status = 0; case "texinfo" - [text, status] = makeinfo (text, "plain text"); + [text, status] = __makeinfo__ (text, "plain text"); case "html" [text, status] = strip_html_tags (text); case "not documented" @@ -75,7 +75,7 @@ ## Print text if (status != 0) - warning ("makeinfo: Texinfo formatting filter exited abnormally; raw Texinfo source of help text follows...\n"); + warning ("help: Texinfo formatting filter exited abnormally; raw Texinfo source of help text follows...\n"); endif which (name); @@ -104,7 +104,7 @@ case "plain text" status = 0; case "texinfo" - [text, status] = makeinfo (text, "plain text"); + [text, status] = __makeinfo__ (text, "plain text"); case "html" [text, status] = strip_html_tags (text); endswitch
--- a/scripts/help/lookfor.m Mon Feb 16 16:44:55 2009 -0500 +++ b/scripts/help/lookfor.m Mon Feb 16 17:01:17 2009 -0500 @@ -105,7 +105,7 @@ case "plain text" status = 0; case "texinfo" - [text, status] = makeinfo (text, "plain text"); + [text, status] = __makeinfo__ (text, "plain text"); case "html" [text, status] = strip_html_tags (text); otherwise
--- a/scripts/help/makeinfo.m Mon Feb 16 16:44:55 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,160 +0,0 @@ -## Copyright (C) 2009 Søren Hauberg -## -## This program is free software; you can redistribute it and/or modify it -## under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 3 of the License, or (at -## your option) any later version. -## -## This program is distributed in the hope that it will be useful, but -## WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; see the file COPYING. If not, see -## <http://www.gnu.org/licenses/>. - -## -*- texinfo -*- -## @deftypefn {Function File} {[@var{retval}, @var{status}] =} makeinfo (@var{text}, @ -## @var{output_type}) -## @deftypefnx{Function File} {[@var{retval}, @var{status}] =} makeinfo (@var{text}, @ -## @var{output_type}, @var{see_also}) -## Run @code{makeinfo} on a given text. -## -## The string @var{text} is run through the @code{makeinfo} program to generate -## output in various formats. This string must contain valid Texinfo formatted -## text. -## -## The @var{output_type} selects the format of the output. This can be either -## @t{"html"}, @t{"texinfo"}, or @t{"plain text"}. By default this is -## @t{"plain text"}. If @var{output_type} is @t{"texinfo"}, the @t{@@seealso} -## macro is expanded, but otherwise the text is unaltered. -## -## If the optional argument @var{see_also} is present, it is used to expand the -## Octave specific @t{@@seealso} macro. This argument must be a function handle, -## that accepts a cell array of strings as input argument (each elements of the -## array corresponds to the arguments to the @t{@@seealso} macro), and return -## the expanded string. If this argument is not given, the @t{@@seealso} macro -## will be expanded to the text -## -## @example -## See also: arg1, arg2@, ... -## @end example -## -## @noindent -## for @t{"plain text"} output, and -## -## @example -## See also: @@ref@{arg1@}, @@ref@{arg2@}, ... -## @end example -## -## @noindent -## otherwise. -## -## The optional output argument @var{status} contains the exit status of the -## @code{makeinfo} program as returned by @code{system}. -## @end deftypefn - -function [retval, status] = makeinfo (text, output_type = "plain text", see_also = []) - ## Check input - if (nargin == 0) - print_usage (); - endif - - if (!ischar (text)) - error ("makeinfo: first input argument must be a string"); - endif - - if (!ischar (output_type)) - error ("makeinfo: second input argument must be a string"); - endif - - ## Define the @seealso macro - if (isempty (see_also)) - if (strcmpi (output_type, "plain text")) - see_also = @simple_see_also; - else - see_also = @simple_see_also_with_refs; - endif - endif - - if (!isa (see_also, "function_handle")) - error ("makeinfo: third input argument must be the empty matrix, or a function handle"); - endif - - ## It seems like makeinfo sometimes gets angry if the character on a line is - ## a space, so we remove these. - text = strrep (text, "\n ", "\n"); - - ## Handle @seealso macro - SEE_ALSO = "@seealso"; - start = strfind (text, SEE_ALSO); - if (!isempty (start)) - if (start == 1 || (text (start-1) != "@")) - bracket_start = find (text (start:end) == "{", 1); - stop = find (text (start:end) == "}", 1); - if (!isempty (stop) && !isempty (bracket_start)) - stop += start - 1; - bracket_start += start - 1; - else - bracket_start = start + length (SEE_ALSO); - stop = find (text (start:end) == "\n", 1); - if (isempty (stop)) - stop = length (text); - else - stop += start - 1; - endif - endif - see_also_args = text (bracket_start+1:(stop-1)); - see_also_args = strtrim (cellstr (split (see_also_args, ","))); - expanded = see_also (see_also_args); - text = strcat (text (1:start-1), expanded, text (stop+1:end)); - endif - endif - - if (strcmpi (output_type, "texinfo")) - status = 0; - retval = text; - return; - endif - - ## Create the final TeXinfo input string - text = sprintf ("\\input texinfo\n\n%s\n\n@bye\n", text); - - unwind_protect - ## Write Texinfo to tmp file - [fid, name, msg] = mkstemp ("octave_help_XXXXXX", true); - fwrite (fid, text); - fclose (fid); - - ## Take action depending on output type - switch (lower (output_type)) - case "plain text" - cmd = sprintf ("%s --no-headers --no-warn --force --no-validate %s", - makeinfo_program (), name); - case "html" - cmd = sprintf ("%s --no-headers --html --no-warn --no-validate --force %s", - makeinfo_program (), name); - otherwise - error ("makeinfo: unsupported output type: '%s'", output_type); - endswitch - - ## Call makeinfo - [status, retval] = system (cmd); - - unwind_protect_cleanup -# if (exist (name, "file")) -# delete (name); -# endif - end_unwind_protect -endfunction - -function expanded = simple_see_also (args) - expanded = strcat ("\nSee also:", sprintf (" %s,", args {:})); - expanded = strcat (expanded (1:end-1), "\n\n"); -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
--- a/scripts/help/print_usage.m Mon Feb 16 16:44:55 2009 -0500 +++ b/scripts/help/print_usage.m Mon Feb 16 17:01:17 2009 -0500 @@ -57,8 +57,8 @@ ## Raise the final error if (status != 0) - warning ("makeinfo: Texinfo formatting filter exited abnormally"); - warning ("makeinfo: raw Texinfo source of help text follows...\n"); + warning ("print_usage: Texinfo formatting filter exited abnormally"); + warning ("print_usage: raw Texinfo source of help text follows...\n"); endif error ("Invalid call to %s. Correct usage is:\n\n%s\n%s", @@ -101,7 +101,7 @@ endif ## Run makeinfo to generate plain text - [retval, status] = makeinfo (buffer, "plain text"); + [retval, status] = __makeinfo__ (buffer, "plain text"); endfunction function [retval, status] = get_usage_html (help_text, max_len)