annotate extra/generate_html/inst/html_help_text.m @ 9932:0ae56b3486df octave-forge

html_help_text: reverting changes comitted by accident in r8745
author carandraug
date Sat, 31 Mar 2012 21:36:13 +0000
parents c762ea517481
children c11796bf9e82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
1 ## Copyright (C) 2008 Soren Hauberg
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
2 ##
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
3 ## This program is free software; you can redistribute it and/or modify it
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
4 ## under the terms of the GNU General Public License as published by
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
5 ## the Free Software Foundation; either version 3 of the License, or (at
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
6 ## your option) any later version.
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
7 ##
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
8 ## This program is distributed in the hope that it will be useful, but
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
9 ## WITHOUT ANY WARRANTY; without even the implied warranty of
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
11 ## General Public License for more details.
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
12 ##
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
13 ## You should have received a copy of the GNU General Public License
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
14 ## along with this program; see the file COPYING. If not, see
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
15 ## <http://www.gnu.org/licenses/>.
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
16
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
17 ## -*- texinfo -*-
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
18 ## @deftypefn {Function File} html_help_text (@var{name}, @var{outname}, @var{options})
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
19 ## Writes a function help text to disk formatted as @t{HTML}.
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
20 ##
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
21 ## The help text of the function @var{name} is written to the file @var{outname}
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
22 ## formatted as @t{HTML}. The design of the generated @t{HTML} page is controlled
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
23 ## through the @var{options} variable. This is a structure with the following
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
24 ## optional fields.
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
25 ##
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
26 ## @table @samp
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
27 ## @item header
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
28 ## This field contains the @t{HTML} header of the generated file. Through this
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
29 ## things such as @t{CSS} style sheets can be set.
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
30 ## @item footer
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
31 ## This field contains the @t{HTML} footer of the generated file. This should
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
32 ## match the @samp{header} field to ensure all opened tags get closed.
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
33 ## @item title
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
34 ## This field sets the title of the @t{HTML} page. This is enforced even if the
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
35 ## @samp{header} field contains a title.
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
36 ## @end table
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
37 ##
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
38 ## @var{options} structures for various projects can be with the @code{get_html_options}
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
39 ## function. As a convenience, if @var{options} is a string, a structure will
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
40 ## be generated by calling @code{get_html_options}.
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
41 ##
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
42 ## @seealso{get_html_options, generate_package_html}
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
43 ## @end deftypefn
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
44
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
45 function html_help_text (name, outname, options = struct (), root = "")
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
46 ## Get the help text of the function
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
47 [text, format] = get_help_text (name);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
48
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
49 ## If options is a string, call get_html_options
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
50 if (ischar (options))
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
51 options = get_html_options (options);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
52 endif
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
53
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
54 ## Take action depending on help text format
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
55 switch (lower (format))
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
56 case "plain text"
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
57 header = "<html><head><title></title></head><body>\n";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
58 text = sprintf ("<pre>%s</pre>\n", text);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
59 footer = "</body></html>\n";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
60
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
61 case "texinfo"
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
62 ## Add easily recognisable text before and after real text
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
63 start = "###### OCTAVE START ######";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
64 stop = "###### OCTAVE STOP ######";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
65 text = sprintf ("%s\n%s\n%s\n", start, text, stop);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
66
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
67 ## Handle @seealso
6793
46c8b04e5a5a Deal with keywords in @seealso's
hauberg
parents: 6645
diff changeset
68 if (isfield (options, "seealso"))
46c8b04e5a5a Deal with keywords in @seealso's
hauberg
parents: 6645
diff changeset
69 seealso = @(args) options.seealso (root, args);
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
70 else
6793
46c8b04e5a5a Deal with keywords in @seealso's
hauberg
parents: 6645
diff changeset
71 seealso = @(args) html_see_also_with_prefix (root, args {:});
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
72 endif
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
73
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
74 ## Run makeinfo
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
75 [text, status] = __makeinfo__ (text, "html", seealso);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
76 if (status != 0)
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
77 error ("html_help_text: couln't parse file '%s'", name);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
78 endif
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
79
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
80 ## Split text into header, body, and footer using the text we added above
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
81 start_idx = strfind (text, start);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
82 stop_idx = strfind (text, stop);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
83 header = text (1:start_idx - 1);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
84 footer = text (stop_idx + length (stop):end);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
85 text = text (start_idx + length (start):stop_idx - 1);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
86
6131
06bed41ae641 First draft of html generation for new release system
hauberg
parents: 5755
diff changeset
87 ## Hack around 'makeinfo' bug that forgets to put <p>'s before function declarations
06bed41ae641 First draft of html generation for new release system
hauberg
parents: 5755
diff changeset
88 text = strrep (text, "&mdash;", "<p class=\"functionfile\">");
06bed41ae641 First draft of html generation for new release system
hauberg
parents: 5755
diff changeset
89
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
90 case "not found"
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
91 error ("html_help_text: `%s' not found\n", name);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
92 otherwise
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
93 error ("html_help_text: internal error: unsupported help text format: '%s'\n", format);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
94 endswitch
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
95
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
96 ## Read 'options' input argument
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
97 [header, title, footer] = get_header_title_and_footer (options, name, root);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
98
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
99 ## Add demo:// links if requested
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
100 if (isfield (options, "include_demos") && options.include_demos)
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
101 ## Determine if we have demos
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
102 [code, idx] = test (name, "grabdemo");
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
103 if (length (idx) > 1)
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
104 ## Demos to the main text
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
105 demo_text = "";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
106
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
107 outdir = fileparts (outname);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
108 imagedir = "images";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
109 full_imagedir = fullfile (outdir, imagedir);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
110 num_demos = length (idx) - 1;
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
111 demo_num = 0;
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
112 for k = 1:num_demos
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
113 ## Run demo
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
114 code_k = code (idx (k):idx (k+1)-1);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
115 try
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
116 [output, images] = get_output (code_k, imagedir, full_imagedir, name);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
117 catch
6289
c4af9074d1a6 Add Octave 3.2 requirement
hauberg
parents: 6131
diff changeset
118 lasterr ()
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
119 continue;
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
120 end_try_catch
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
121 has_text = !isempty (output);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
122 has_images = !isempty (images);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
123 if (length (images) > 1)
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
124 ft = "figures";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
125 else
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
126 ft = "figure";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
127 endif
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
128
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
129 ## Create text
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
130 demo_num ++;
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
131 demo_header = sprintf ("<h2>Demonstration %d</h2>\n<div class=\"demo\">\n", demo_num);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
132 demo_footer = "</div>\n";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
133
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
134 demo_k {1} = "<p>The following code</p>\n";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
135 demo_k {2} = sprintf ("<pre class=\"example\">%s</pre>\n", code_k);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
136 if (has_text && has_images)
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
137 demo_k {3} = "<p>Produces the following output</p>\n";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
138 demo_k {4} = sprintf ("<pre class=\"example\">%s</pre>\n", output);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
139 demo_k {5} = sprintf ("<p>and the following %s</p>\n", ft);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
140 demo_k {6} = sprintf ("<p>%s</p>\n", images_in_html (images));
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
141 elseif (has_text) # no images
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
142 demo_k {3} = "<p>Produces the following output</p>\n";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
143 demo_k {4} = sprintf ("<pre class=\"example\">%s</pre>\n", output);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
144 elseif (has_images) # no text
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
145 demo_k {3} = sprintf ("<p>Produces the following %s</p>\n", ft);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
146 demo_k {6} = sprintf ("<p>%s</p>\n", images_in_html (images));
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
147 else # neither text nor images
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
148 demo_k {3} = sprintf ("<p>gives an example of how '%s' is used.</p>\n", name);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
149 endif
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
150
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
151 demo_text = strcat (demo_text, demo_header, demo_k {:}, demo_footer);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
152 endfor
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
153
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
154 text = strcat (text, demo_text);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
155 endif
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
156 endif
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
157
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
158 ## Write result to disk
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
159 fid = fopen (outname, "w");
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
160 if (fid < 0)
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
161 error ("html_help_text: could not open '%s' for writing", outname);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
162 endif
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
163 fprintf (fid, "%s\n%s\n%s", header, text, footer);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
164 fclose (fid);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
165
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
166 endfunction
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
167
6793
46c8b04e5a5a Deal with keywords in @seealso's
hauberg
parents: 6645
diff changeset
168 function expanded = html_see_also_with_prefix (prefix, root, varargin)
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
169 header = "@html\n<div class=\"seealso\">\n<b>See also</b>: ";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
170 footer = "\n</div>\n@end html\n";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
171
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
172 format = sprintf (" <a href=\"%s%%s.html\">%%s</a> ", prefix);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
173
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
174 varargin2 = cell (1, 2*length (varargin));
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
175 varargin2 (1:2:end) = varargin;
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
176 varargin2 (2:2:end) = varargin;
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
177
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
178 list = sprintf (format, varargin2 {:});
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
179
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
180 expanded = strcat (header, list, footer);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
181 endfunction
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
182
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
183 function [text, images] = get_output (code, imagedir, full_imagedir, fileprefix)
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
184 ## Clear everything
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
185 close all
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
186 diary_file = "__diary__.txt";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
187 if (exist (diary_file, "file"))
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
188 delete (diary_file);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
189 endif
5755
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
190
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
191 unwind_protect
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
192 ## Setup figure and pager properties
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
193 def = get (0, "defaultfigurevisible");
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
194 set (0, "defaultfigurevisible", "off");
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
195 more_val = page_screen_output (false);
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
196
5755
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
197 ## Evaluate the code
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
198 diary (diary_file);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
199 eval (code);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
200 diary ("off");
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
201
5755
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
202 ## Read the results
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
203 fid = fopen (diary_file, "r");
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
204 diary_data = char (fread (fid).');
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
205 fclose (fid);
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
206
5755
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
207 ## Remove 'diary ("off");' from the diary
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
208 idx = strfind (diary_data, "diary (\"off\");");
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
209 if (isempty (idx))
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
210 text = diary_data;
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
211 else
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
212 text = diary_data (1:idx (end)-1);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
213 endif
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
214 text = strtrim (text);
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
215
5755
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
216 ## Save figures
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
217 if (!isempty (get (0, "currentfigure")) && !exist (full_imagedir, "dir"))
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
218 mkdir (full_imagedir);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
219 endif
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
220
5755
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
221 images = {};
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
222 while (!isempty (get (0, "currentfigure")))
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
223 fig = gcf ();
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
224 r = round (1000*rand ());
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
225 name = sprintf ("%s_%d.png", fileprefix, r);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
226 full_filename = fullfile (full_imagedir, name);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
227 filename = fullfile (imagedir, name);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
228 print (fig, full_filename);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
229 images {end+1} = filename;
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
230 close (fig);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
231 endwhile
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
232
5755
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
233 ## Reverse image list, since we got them latest-first
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
234 images = images (end:-1:1);
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
235
5755
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
236 unwind_protect_cleanup
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
237 delete (diary_file);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
238 set (0, "defaultfigurevisible", def);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
239 page_screen_output (more_val);
ca7b889db533 Clean up properly using unwind_protect
hauberg
parents: 5625
diff changeset
240 end_unwind_protect
5625
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
241 endfunction
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
242
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
243 function text = images_in_html (images)
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
244 header = "<table class=\"images\">\n<tr>\n";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
245 footer = "</tr></table>\n";
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
246 headers = sprintf ("<th class=\"images\">Figure %d</th>\n", 1:numel (images));
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
247 ims = sprintf ("<td class=\"images\"><img src=\"%s\" class=\"demo\"/></td>\n", images {:});
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
248 text = strcat (header, headers, "</tr><tr>\n", ims, footer);
c4eab3671e06 Add first revision of generate_html package
hauberg
parents:
diff changeset
249 endfunction