Mercurial > octave-dspies
annotate scripts/testfun/private/dump_demos.m @ 18897:f9cf5ae6b8a2
Add image directory to plot comparison scripts.
* compare_plot_demos.m, dump_demos.m: Add image directory to plot comparison
scripts.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 04 Jul 2014 21:40:50 -0700 |
parents | b8934a57e13e |
children | 87324260043d |
rev | line source |
---|---|
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
1 ## Copyright (C) 2010 Søren Hauberg |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
2 ## |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
3 ## This file is part of Octave. |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
4 ## |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
8 ## your option) any later version. |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
9 ## |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
10 ## Octave is distributed in the hope that it will be useful, but |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
13 ## General Public License for more details. |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
14 ## |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
16 ## along with Octave; see the file COPYING. If not, see |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
18 |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
20 ## @deftypefn {Function File} {} dump_demos () |
18875
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
21 ## @deftypefnx {Function File} {} dump_demos (@var{dirs}) |
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
22 ## @deftypefnx {Function File} {} dump_demos (@var{dirs}, @var{mfile}) |
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
23 ## @deftypefnx {Function File} {} dump_demos (@var{dirs}, @var{mfile}, @var{fmt}) |
18895 | 24 ## Produce a script, with the name specified by @var{mfile}, containing |
25 ## the demos in the directories, @var{dirs}. The demos are assumed to produce | |
26 ## graphical output, whose renderings are saved with the specified format, | |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
27 ## @var{fmt}. |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
28 ## |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
29 ## The defaults for each input are; |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
30 ## |
18895 | 31 ## @table @var |
18875
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
32 ## @item @var{dirs} |
18897
f9cf5ae6b8a2
Add image directory to plot comparison scripts.
Rik <rik@octave.org>
parents:
18895
diff
changeset
|
33 ## @code{@{"plot/appearance", "plot/draw", "plot/util", "image/"@}} |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
34 ## @item @var{mfile} |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
35 ## @code{"dump.m"} |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
36 ## @item @var{fmt} |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
37 ## @code{"png"} |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
38 ## @end table |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
39 ## |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
40 ## For example, to produce PNG output for all demos of the functions |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
41 ## in the plot directory; |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
42 ## |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
43 ## @example |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
44 ## dump_demos plot dump.m png |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
45 ## @end example |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
46 ## @seealso{fntests, test, demo} |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
47 ## @end deftypefn |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
48 |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
49 ## Author: Søren Hauberg <soren@hauberg.org> |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
50 |
18897
f9cf5ae6b8a2
Add image directory to plot comparison scripts.
Rik <rik@octave.org>
parents:
18895
diff
changeset
|
51 function dump_demos (dirs={"plot/appearance", "plot/draw", "plot/util", "image/"}, output="dump.m", fmt="png") |
18875
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
52 |
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
53 if (nargin > 3) |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
54 print_usage (); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
55 endif |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
56 |
18895 | 57 if (ischar (dirs)) |
58 dirs = {dirs}; | |
59 elseif (! iscellstr (dirs)) | |
60 error ("dump_demos: DIRS must be a cell array of strings with directory names"); | |
61 endif | |
62 | |
63 [~, funcname, ext] = fileparts (output); | |
64 if (isempty (ext)) | |
65 output = [output ".m"]; | |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
66 endif |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
67 |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
68 ## Create script beginning (close figures, etc.) |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
69 fid = fopen (output, "w"); |
18875
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
70 fprintf (fid, "%% DO NOT EDIT! Generated automatically by dump_demos.m\n"); |
18895 | 71 fprintf (fid, "function %s ()\n", funcname); |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
72 fprintf (fid, "close all\n"); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
73 fprintf (fid, "more off\n"); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
74 |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
75 ## Run and print the demos in each directory |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
76 for i = 1:numel (dirs) |
18895 | 77 d = dirs{i}; |
78 if (! is_absolute_filename (d)) | |
79 d = dir_in_loadpath (d); | |
18875
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
80 endif |
18895 | 81 if (! exist (d, "dir")) |
82 error ("dump_demos: directory %s does not exist", d); | |
18875
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
83 endif |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
84 dump_all_demos (d, fid, fmt); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
85 endfor |
18875
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
86 |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
87 ## Create script ending |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
88 fprintf (fid, "end\n\n") |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
89 |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
90 ## Close script |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
91 fclose (fid); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
92 endfunction |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
93 |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
94 function dump_all_demos (directory, fid, fmt) |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
95 dirinfo = dir (fullfile (directory, "*.m")); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
96 flist = {dirinfo.name}; |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
97 ## Remove uigetdir, uigetfile, uiputfile, etc. |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
98 flist = flist(! strncmp (flist, "ui", 2)); |
18895 | 99 ## Remove linkaxes, linkprops |
100 flist = flist(! strncmp (flist, "link", 4)); | |
101 ## Remove colormap | |
102 flist = flist(! strncmp (flist, "colormap", 8)); | |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
103 for i = 1:numel (flist) |
18895 | 104 fcn = flist{i}; |
105 fcn(end-1:end) = []; # remove .m | |
106 demos = get_demos (fcn); | |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
107 for d = 1:numel (demos) |
18895 | 108 idx = sprintf ("%02d", d); |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
109 fprintf (fid, "\ntry\n"); |
18895 | 110 fprintf (fid, " %s\n\n", demos{d}); |
111 fprintf (fid, " drawnow;\n"); | |
112 fprintf (fid, " fig = (get (0, 'currentfigure'));\n"); | |
113 fprintf (fid, " if (~ isempty (fig))\n"); | |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
114 fprintf (fid, " figure (fig);\n"); |
18895 | 115 fprintf (fid, " name = '%s_%s.%s';\n", fcn, idx, fmt); |
116 fprintf (fid, " if (isempty (dir (name)))\n"); | |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
117 fprintf (fid, " fprintf ('Printing ""%%s"" ... ', name);\n") |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
118 fprintf (fid, " print ('-d%s', name);\n", fmt); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
119 fprintf (fid, " fprintf ('done\\n');\n"); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
120 fprintf (fid, " else\n"); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
121 fprintf (fid, " fprintf ('File ""%%s"" exists.\\n', name);\n") |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
122 fprintf (fid, " end\n"); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
123 fprintf (fid, " end\n"); |
18895 | 124 # Temporary fix for cruft accumulating in figure window. |
125 fprintf (fid, " close ('all');\n"); | |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
126 fprintf (fid, "catch\n"); |
18895 | 127 fprintf (fid, " fprintf ('ERROR in %s_%s: %%s\\n', lasterr ());\n", fcn, idx); |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
128 fprintf (fid, "end\n\n"); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
129 endfor |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
130 endfor |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
131 fprintf (fid, "close all\n"); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
132 endfunction |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
133 |
18895 | 134 function retval = get_demos (fcn) |
135 [code, idx] = test (fcn, "grabdemo"); | |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
136 num_demos = length (idx) - 1; |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
137 retval = cell (1, num_demos); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
138 ## Now split the demos into a cell array |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
139 for k = 1:num_demos |
18895 | 140 retval{k} = oct2mat (code(idx(k):idx(k+1)-1)); |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
141 endfor |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
142 endfunction |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
143 |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
144 function code = oct2mat (code) |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
145 ## Simple hacks to make things Matlab compatible |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
146 code = strrep (code, "%!", "%%"); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
147 code = strrep (code, "!", "~"); |
18895 | 148 ## Simply replacing double quotes with single quotes |
18875
0075f3fba930
dump_demos.m: Update to match new plot directory structure
Andreas Weber <andy.weber.aw@gmail.com>
parents:
18874
diff
changeset
|
149 ## causes problems with strings like 'hello "world"' |
18895 | 150 ## More complicated regexprep targets only full double quoted strings |
151 code = regexprep (code, "^([^']*)\"(.*)\"", "$1'$2'", | |
152 "lineanchors", "dotexceptnewline"); | |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
153 code = strrep (code, "#", "%"); |
18895 | 154 ## Fix the format specs for the errorbar demos changed by the line above |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
155 code = strrep (code, "%r", "#r"); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
156 code = strrep (code, "%~", "#~"); |
18895 | 157 endkeywords = {"endfor", "endfunction", "endif", "endwhile", "end_try_catch"}; |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
158 for k = 1:numel (endkeywords) |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
159 code = strrep (code, endkeywords{k}, "end"); |
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
160 endfor |
18895 | 161 commentkeywords = {"unwind_protect", "end_unwind_protect"}; |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
162 for k = 1:numel (commentkeywords) |
18895 | 163 code = strrep (code, commentkeywords{k}, ["%" commentkeywords{k}]); |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
164 endfor |
18895 | 165 |
166 ## Fix up sombrero which now has default argument in Octave | |
167 code = strrep (code, "sombrero ()", "sombrero (41)"); | |
18874
c74673161752
Add scripts to help validate plot results.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
168 endfunction |
18895 | 169 |