Mercurial > octave
annotate scripts/miscellaneous/publish.m @ 25698:ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
* NEWS: Announce change in behavior.
* oct-string.cc (strncmp, strncmpi): Change templates to check length of
strings against neff (N effective) which is the smaller of the actual string
length or N itself.
* strfns.cc: Add new BIST tests, marked as regressions, for this behavior.
Change existing BIST tests to pass.
* publish.m (is_publish_markup): New nested function replacing an anonymous
function. This version does not index past the length of the string when
checking if the N+1 character is a space.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 25 Jul 2018 10:55:46 -0700 |
parents | 6652d3823428 |
children | af43eb4e6502 |
rev | line source |
---|---|
25054
6652d3823428
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
25024
diff
changeset
|
1 ## Copyright (C) 2016-2018 Kai T. Ohlhus <k.ohlhus@gmail.com> |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
2 ## Copyright (C) 2010 Fotios Kasolis <fotios.kasolis@gmail.com> |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
3 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
4 ## This file is part of Octave. |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
5 ## |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24491
diff
changeset
|
6 ## Octave is free software: you can redistribute it and/or modify it |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
7 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24491
diff
changeset
|
8 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22708
diff
changeset
|
9 ## (at your option) any later version. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
10 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
11 ## Octave is distributed in the hope that it will be useful, but |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22708
diff
changeset
|
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22708
diff
changeset
|
14 ## GNU General Public License for more details. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
15 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
16 ## You should have received a copy of the GNU General Public License |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
17 ## along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24491
diff
changeset
|
18 ## <https://www.gnu.org/licenses/>. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
19 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
20 ## -*- texinfo -*- |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
21 ## @deftypefn {} {} publish (@var{file}) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
22 ## @deftypefnx {} {} publish (@var{file}, @var{output_format}) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
23 ## @deftypefnx {} {} publish (@var{file}, @var{option1}, @var{value1}, @dots{}) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
24 ## @deftypefnx {} {} publish (@var{file}, @var{options}) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
25 ## @deftypefnx {} {@var{output_file} =} publish (@var{file}, @dots{}) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
26 ## |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
27 ## Generate a report from the Octave script file @var{file} in one of several |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
28 ## output formats. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
29 ## |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
30 ## The generated reports interpret any Publishing Markup in comments, which is |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
31 ## explained in detail in the GNU Octave manual. Assume the following example, |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
32 ## using some Publishing Markup, to be the contents of the script file |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
33 ## @file{pub_example.m}: |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
34 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
35 ## @example |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
36 ## @group |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
37 ## ## Headline title |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
38 ## # |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
39 ## # Some *bold*, _italic_, or |monospaced| Text with |
25024
3c817af70eed
maint: use https for all Octave project URLs
Mike Miller <mtmiller@octave.org>
parents:
24534
diff
changeset
|
40 ## # a <https://www.octave.org link to *GNU Octave*>. |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
41 ## ## |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
42 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
43 ## # "Real" Octave commands to be evaluated |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
44 ## sombrero () |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
45 ## |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
46 ## %% @sc{matlab} comment style ('%') is supported as well |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
47 ## % |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
48 ## % * Bulleted list item 1 |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
49 ## % * Bulleted list item 2 |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
50 ## % |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
51 ## % # Numbered list item 1 |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
52 ## % # Numbered list item 2 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
53 ## @end group |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
54 ## @end example |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
55 ## |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
56 ## To publish this script file, type @code{publish ("pub_example.m")}. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
57 ## |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
58 ## With only @var{file} given, a HTML report is generated in a subdirectory |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
59 ## @file{html} relative to the current working directory. The Octave commands |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
60 ## are evaluated in a separate context and any figures created while executing |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
61 ## the script file are included in the report. All formatting syntax of |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
62 ## @var{file} is treated according to the specified output format and included |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
63 ## in the report. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
64 ## |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
65 ## Using @code{publish (@var{file}, @var{output_format})} is equivalent to the |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
66 ## function call using a structure |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
67 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
68 ## @example |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
69 ## @group |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
70 ## @var{options}.format = @var{output_format}; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
71 ## publish (@var{file}, @var{options}) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
72 ## @end group |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
73 ## @end example |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
74 ## |
22299
9fc91bb2aec3
doc: grammarcheck documentation for 4.2 release.
Rik <rik@octave.org>
parents:
22157
diff
changeset
|
75 ## @noindent |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
76 ## which is described below. The same holds for using option/value pairs |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
77 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
78 ## @example |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
79 ## @group |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
80 ## @var{options}.@var{option1} = @var{value1}; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
81 ## publish (@var{file}, @var{options}) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
82 ## @end group |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
83 ## @end example |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
84 ## |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
85 ## The structure @var{options} can have the following field names. If a field |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
86 ## name is not specified, the default value is used: |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
87 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
88 ## @itemize @bullet |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
89 ## @item |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
90 ## @samp{format} --- Output format of the published script file, one of |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
91 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
92 ## @samp{html} (default), @samp{doc}, @samp{latex}, @samp{ppt}, |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
93 ## @samp{pdf}, or @samp{xml}. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
94 ## |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
95 ## The output formats @samp{doc}, @samp{ppt}, and @samp{xml} are not currently |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
96 ## supported. To generate a @samp{doc} report, open a generated @samp{html} |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
97 ## report with your office suite. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
98 ## |
23188
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
99 ## In Octave custom formats are supported by implementing all callback |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
100 ## subfunctions in a function file named |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
101 ## @samp{__publish_<custom format>_output__.m}. To obtain a template for the |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
102 ## HTML format type: |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
103 ## |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
104 ## @example |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
105 ## @group |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
106 ## edit (fullfile (fileparts (which ("publish")), ... |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
107 ## "private", "__publish_html_output__.m")) |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
108 ## @end group |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
109 ## @end example |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
110 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
111 ## @item |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
112 ## @samp{outputDir} --- Full path of the directory where the generated report |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
113 ## will be located. If no directory is given, the report is generated in a |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
114 ## subdirectory @file{html} relative to the current working directory. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
115 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
116 ## @item |
22299
9fc91bb2aec3
doc: grammarcheck documentation for 4.2 release.
Rik <rik@octave.org>
parents:
22157
diff
changeset
|
117 ## @samp{stylesheet} --- Not supported, only for @sc{matlab} compatibility. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
118 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
119 ## @item |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
120 ## @samp{createThumbnail} --- Not supported, only for @sc{matlab} |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
121 ## compatibility. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
122 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
123 ## @item |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
124 ## @samp{figureSnapMethod} --- Not supported, only for @sc{matlab} |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
125 ## compatibility. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
126 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
127 ## @item |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
128 ## @samp{imageFormat} --- Desired format for any images produced while |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
129 ## evaluating the code. The allowed image formats depend on the output format: |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
130 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
131 ## @itemize @bullet |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
132 ## @item @samp{html}, @samp{xml} --- @samp{png} (default), any image format |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
133 ## supported by Octave |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
134 ## |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
135 ## @item @samp{latex} --- @samp{epsc2} (default), any image format supported by |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
136 ## Octave |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
137 ## |
22299
9fc91bb2aec3
doc: grammarcheck documentation for 4.2 release.
Rik <rik@octave.org>
parents:
22157
diff
changeset
|
138 ## @item @samp{pdf} --- @samp{jpg} (default) or @samp{bmp}, note @sc{matlab} |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
139 ## uses @samp{bmp} as default |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
140 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
141 ## @item @samp{doc} or @samp{ppt} --- @samp{png} (default), @samp{jpg}, |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
142 ## @samp{bmp}, or @samp{tiff} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
143 ## @end itemize |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
144 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
145 ## @item |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
146 ## @samp{maxWidth} and @samp{maxHeight} --- Maximum width (height) of the |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
147 ## produced images in pixels. An empty value means no restriction. Both |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
148 ## values must be set in order for the option to work properly. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
149 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
150 ## @samp{[]} (default), integer value @geq{} 0 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
151 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
152 ## @item |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
153 ## @samp{useNewFigure} --- Use a new figure window for figures created by the |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
154 ## evaluated code. This avoids side effects with already opened figure |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
155 ## windows. |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
156 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
157 ## @samp{true} (default) or @samp{false} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
158 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
159 ## @item |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
160 ## @samp{evalCode} --- Evaluate code of the Octave source file |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
161 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
162 ## @samp{true} (default) or @samp{false} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
163 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
164 ## @item |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
165 ## @samp{catchError} --- Catch errors while evaluating code and continue |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
166 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
167 ## @samp{true} (default) or @samp{false} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
168 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
169 ## @item |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
170 ## @samp{codeToEvaluate} --- Octave commands that should be evaluated prior to |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
171 ## publishing the script file. These Octave commands do not appear in the |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
172 ## generated report. |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
173 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
174 ## @item |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
175 ## @samp{maxOutputLines} --- Maximum number of output lines from code |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
176 ## evaluation which are included in output. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
177 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
178 ## @samp{Inf} (default) or integer value > 0 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
179 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
180 ## @item |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
181 ## @samp{showCode} --- Show the evaluated Octave commands in the generated |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
182 ## report |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
183 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
184 ## @samp{true} (default) or @samp{false} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
185 ## @end itemize |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
186 ## |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
187 ## The option output @var{output_file} is a string with path and file name |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
188 ## of the generated report. |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
189 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
190 ## @seealso{grabcode} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
191 ## @end deftypefn |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
192 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
193 function output_file = publish (file, varargin) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
194 |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
195 if (nargin < 1) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
196 print_usage (); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
197 endif |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
198 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
199 if (exist (file, "file") != 2) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
200 error ("publish: FILE does not exist"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
201 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
202 |
22384
ac45255ccd2c
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22330
diff
changeset
|
203 ## Check file to be in Octave's load path |
ac45255ccd2c
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22330
diff
changeset
|
204 [file_path, file_name, file_ext] = fileparts (file); |
ac45255ccd2c
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22330
diff
changeset
|
205 if (isempty (file_path)) |
ac45255ccd2c
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22330
diff
changeset
|
206 file_path = pwd; |
ac45255ccd2c
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22330
diff
changeset
|
207 endif |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
208 if (exist ([file_name, file_ext]) != 2) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
209 error (["publish: " file " is not in the load path"]); |
22384
ac45255ccd2c
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22330
diff
changeset
|
210 endif |
ac45255ccd2c
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22330
diff
changeset
|
211 |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
212 ## Check file extension and that file is an Octave script |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
213 file_info = __which__ (file_name); |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
214 if (! strcmp (file_ext, ".m") || ! strcmp (file_info.type, "script")) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
215 error ("publish: only script files can be published"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
216 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
217 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
218 ## Check file to be parsable |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
219 __parse_file__ (file); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
220 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
221 ## Get structure with necessary options |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
222 options = struct (); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
223 if (numel (varargin) == 1) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
224 ## Call: publish (file, format) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
225 if (ischar (varargin{1})) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
226 options.format = varargin{1}; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
227 ## Call: publish (file, options) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
228 elseif (isstruct (varargin{1})) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
229 options = varargin{1}; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
230 else |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
231 error ("publish: second argument must be OUTPUT_FORMAT or OPTIONS"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
232 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
233 ## Call: publish (file, Name1, Value1, Name2, Value2, ...) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
234 elseif (rem (numel (varargin), 2) == 0 |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
235 && all (cellfun (@ischar, varargin(1:2:end)))) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
236 options = cell2struct (varargin(2:2:end), varargin(1:2:end), 2); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
237 else |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
238 error ("publish: invalid arguments"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
239 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
240 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
241 ## Validate options struct |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
242 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
243 ## Options for the output |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
244 if (! isfield (options, "format")) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
245 options.format = "html"; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
246 else |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
247 ## FIXME: Implement remaining formats |
23188
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
248 if (any (strcmpi (options.format, {"doc", "ppt", "xml"}))) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
249 error ('publish: Output format "%s" is not yet supported', |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
250 options.format); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
251 endif |
23188
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
252 ## Supported or custom output format |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
253 supported_formats = {"html", "doc", "latex", "ppt", "xml", "pdf"}; |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
254 if (! any (strcmpi (options.format, supported_formats))) |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
255 ## Check existence of custom formatter |
23188
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
256 custom_formatter = ["__publish_", options.format, "_output__"]; |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
257 if (! exist (custom_formatter, "file")) |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
258 error (['publish: Custom output format "%s" requires the ', ... |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
259 "formatter function:\n\n\t%s\n\n\t", ... |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
260 'See "help publish" for more information.'], |
23188
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
261 options.format, custom_formatter); |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
262 endif |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
263 else |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
264 options.format = validatestring (options.format, supported_formats); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
265 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
266 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
267 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
268 if (! isfield (options, "outputDir")) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
269 ## Matlab R2016a doc says default is "", but specifies to create a |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
270 ## subdirectory named "html" in the current working directory. |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
271 options.outputDir = fullfile (file_path, "html"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
272 elseif (! ischar (options.outputDir)) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
273 error ("publish: OUTPUTDIR must be a string"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
274 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
275 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
276 if (! isfield (options, "stylesheet")) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
277 options.stylesheet = ""; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
278 elseif (! ischar (options.stylesheet)) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
279 error ("publish: STYLESHEET must be a string"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
280 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
281 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
282 ## Options for the figures |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
283 if (! isfield (options, "createThumbnail")) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
284 options.createThumbnail = true; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
285 elseif (! isscalar (options.createThumbnail) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
286 || ! isreal (options.createThumbnail)) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
287 error ("publish: CREATETHUMBNAIL must be TRUE or FALSE"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
288 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
289 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
290 if (! isfield (options, "figureSnapMethod")) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
291 options.figureSnapMethod = "entireGUIWindow"; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
292 else |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
293 options.figureSnapMethod = validatestring (options.figureSnapMethod, ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
294 {"entireGUIWindow", "print", "getframe", "entireFigureWindow"}); |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
295 ## FIXME: implement other SnapMethods |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
296 warning ("publish: option FIGURESNAPMETHOD currently not supported"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
297 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
298 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
299 if (! isfield (options, "imageFormat")) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
300 switch (options.format) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
301 case "latex" |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
302 options.imageFormat = "epsc2"; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
303 case "pdf" |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
304 ## Note: Matlab R2016a uses bmp as default |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
305 options.imageFormat = "jpg"; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
306 otherwise |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
307 options.imageFormat = "png"; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
308 endswitch |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
309 elseif (! ischar (options.imageFormat)) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
310 error ("publish: IMAGEFORMAT must be a string"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
311 else |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
312 ## Check valid imageFormat for chosen format |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
313 ## html, latex, and xml accept any imageFormat |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
314 switch (options.format) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
315 case {"doc", "ppt"} |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
316 options.imageFormat = validatestring (options.imageFormat, |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
317 {"png", "jpg", "bmp", "tiff"}); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
318 case "pdf" |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
319 options.imageFormat = validatestring (options.imageFormat, |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
320 {"bmp", "jpg"}); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
321 endswitch |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
322 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
323 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
324 if (! isfield (options, "maxHeight")) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
325 options.maxHeight = []; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
326 elseif (! isscalar (options.maxHeight) || options.maxHeight < 1) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
327 error ("publish: MAXHEIGHT must be a positive integer"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
328 else |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
329 options.maxHeight = uint64 (options.maxHeight); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
330 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
331 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
332 if (! isfield (options, "maxWidth")) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
333 options.maxWidth = []; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
334 elseif (! isscalar (options.maxWidth) || options.maxWidth < 1) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
335 error ("publish: MAXWIDTH must be a positive integer"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
336 else |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
337 options.maxWidth = uint64 (options.maxWidth); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
338 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
339 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
340 if (! isfield (options, "useNewFigure")) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
341 options.useNewFigure = true; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
342 elseif (! isscalar (options.useNewFigure) || ! isreal (options.useNewFigure)) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
343 error ("publish: USENEWFIGURE must be TRUE or FALSE"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
344 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
345 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
346 ## Options for the code |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
347 if (! isfield (options, "evalCode")) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
348 options.evalCode = true; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
349 elseif (! isscalar (options.evalCode) || ! isreal (options.evalCode)) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
350 error ("publish: EVALCODE must be TRUE or FALSE"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
351 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
352 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
353 if (! isfield (options, "catchError")) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
354 options.catchError = true; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
355 elseif (! isscalar (options.catchError) || ! isreal (options.catchError)) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
356 error ("publish: CATCHERROR must be TRUE or FALSE"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
357 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
358 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
359 if (! isfield (options, "codeToEvaluate")) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
360 options.codeToEvaluate = ""; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
361 elseif (! ischar (options.codeToEvaluate)) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
362 error ("publish: CODETOEVALUTE must be a string"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
363 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
364 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
365 if (! isfield (options, "maxOutputLines")) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
366 options.maxOutputLines = Inf; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
367 elseif (! isscalar (options.maxOutputLines) || options.maxOutputLines < 0) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
368 error ("publish: MAXOUTPUTLINES must be an integer >= 0"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
369 else |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
370 options.maxOutputLines = uint64 (options.maxOutputLines); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
371 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
372 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
373 if (! isfield (options, "showCode")) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
374 options.showCode = true; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
375 elseif (! isscalar (options.showCode) || ! isreal (options.showCode)) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
376 error ("publish: SHOWCODE must be TRUE or FALSE"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
377 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
378 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
379 doc.title = ""; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
380 doc.intro = ""; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
381 doc.body = cell (); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
382 doc.m_source = deblank (read_file_to_cellstr (file)); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
383 doc.m_source_file_name = file; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
384 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
385 ## Split code and paragraphs, find formatting |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
386 doc = parse_m_source (doc); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
387 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
388 ## Create output directory |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
389 [status, msg] = mkdir (options.outputDir); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
390 if (status != 1) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
391 error ("publish: cannot create output directory: %s", msg); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
392 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
393 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
394 if (options.evalCode) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
395 doc = eval_code (doc, options); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
396 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
397 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
398 output_file = create_output (doc, options); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
399 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
400 endfunction |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
401 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
402 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
403 function doc = parse_m_source (doc) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
404 ## PARSE_M_SOURCE First parsing level |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
405 ## This function extracts the overall structure (paragraphs and code |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
406 ## sections) given in doc.m_source. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
407 ## |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
408 ## The result is written to doc.body, which then contains a cell |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
409 ## vector of structs, either of |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
410 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
411 ## a) {struct ("type", "code", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
412 ## "lines", [a, b], ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
413 ## "output", [])} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
414 ## b) {struct ("type", "section", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
415 ## "content", title_str)} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
416 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
417 ## Second parsing level is invoked for the paragraph contents, resulting |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
418 ## in more elements for doc.body. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
419 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
420 if (isempty (doc.m_source)) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
421 return; # Nothing to parse |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
422 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
423 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
424 ## Parsing helper functions |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
425 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
426 ## Checks line to have N "%" or "#" lines |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
427 ## followed either by a space or end of string |
25698
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
428 function r = is_publish_markup (cstr, N) |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
429 str = char (cstr); |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
430 |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
431 r = any (strncmp (str, {"%%%", "##"}, N)); |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
432 if (r) |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
433 len = length (str); |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
434 if (len == N) |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
435 r = true; |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
436 elseif (len > N && str(N+1) == " ") |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
437 r = true; |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
438 else |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
439 r = false; |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
440 endif |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
441 endif |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
442 |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
443 return; |
ac386820f2b6
Return true when strncmp matches, but number of characters exceeds strlen (bug #54373)
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
444 endfunction |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
445 ## Checks line of cellstring to be a paragraph line |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
446 is_paragraph = @(cstr) is_publish_markup (cstr, 1); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
447 ## Checks line of cellstring to be a section headline |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
448 is_head = @(cstr) is_publish_markup (cstr, 2); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
449 ## Checks line of cellstring to be a headline without section break, using |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
450 ## the cell mode in Matlab (for compatibility), just treated as a new head. |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
451 is_no_break_head = @(cstr) is_publish_markup (cstr, 3); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
452 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
453 ## Find the indices of paragraphs starting with "%%", "##", or "%%%" |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
454 par_start_idx = find (cellfun (is_head, doc.m_source) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
455 | cellfun (is_no_break_head, doc.m_source)); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
456 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
457 ## If the whole document is code |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
458 if (isempty (par_start_idx)) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
459 doc.body{end+1}.type = "code"; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
460 doc.body{end}.content = strtrim (strjoin (doc.m_source, "\n")); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
461 doc.body{end}.lines = [1, length(doc.m_source)]; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
462 doc.body{end}.output = {}; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
463 return; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
464 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
465 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
466 ## Determine continuous range of paragraphs |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
467 par_end_idx = [par_start_idx(2:end) - 1, length(doc.m_source)]; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
468 for i = 1:numel (par_end_idx) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
469 idx = find (! cellfun (is_paragraph, |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
470 doc.m_source(par_start_idx(i) + 1:par_end_idx(i)))); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
471 if (! isempty (idx)) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
472 par_end_idx(i) = par_start_idx(i) + idx(1) - 1; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
473 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
474 endfor |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
475 ## Code sections between paragraphs |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
476 code_start_idx = par_end_idx(1:end-1) + 1; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
477 code_end_idx = par_start_idx(2:end) - 1; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
478 ## Code at the beginning? |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
479 if (par_start_idx(1) > 1) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
480 code_start_idx = [1, code_start_idx]; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
481 code_end_idx = [par_start_idx(1) - 1, code_end_idx]; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
482 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
483 ## Code at the end? |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
484 if (par_end_idx(end) < length (doc.m_source)) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
485 code_start_idx = [code_start_idx, par_end_idx(end) + 1]; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
486 code_end_idx = [code_end_idx, length(doc.m_source)]; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
487 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
488 ## Remove overlaps |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
489 idx = code_start_idx > code_end_idx; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
490 code_start_idx(idx) = []; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
491 code_end_idx(idx) = []; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
492 ## Remove empty code blocks |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
493 idx = []; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
494 for i = 1:numel (code_start_idx) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
495 if (all (cellfun (@(cstr) isempty (char (cstr)), |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
496 doc.m_source(code_start_idx(i):code_end_idx(i))))) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
497 idx = [idx, i]; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
498 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
499 endfor |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
500 code_start_idx(idx) = []; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
501 code_end_idx(idx) = []; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
502 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
503 ## Try to find a document title and introduction text |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
504 ## 1. First paragraph must start in first line |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
505 ## 2. Second paragraph must start before any code |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
506 title_offset = 0; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
507 if (is_head (doc.m_source{1}) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
508 && ! isempty (par_start_idx) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
509 && par_start_idx(1) == 1 |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
510 && (isempty (code_start_idx) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
511 || (length (par_start_idx) > 1 |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
512 && par_start_idx(2) < code_start_idx(1)))) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
513 doc.title = doc.m_source{1}; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
514 doc.title = doc.title(4:end); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
515 content = doc.m_source(2:par_end_idx(1)); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
516 ## Strip leading "# " |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
517 content = cellfun (@(c) cellstr (c(3:end)), content); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
518 doc.intro = parse_paragraph_content (content); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
519 title_offset = 1; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
520 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
521 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
522 ## Add non-empty paragraphs and code to doc |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
523 j = 1; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
524 i = (1 + title_offset); |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
525 while (i <= numel (par_start_idx) || j <= numel (code_start_idx)) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
526 ## Add code while there is code left |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
527 ## and code is before the next paragraph or there are no more paragraphs |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
528 while (j <= numel (code_start_idx) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
529 && (i > numel (par_start_idx) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
530 || par_start_idx(i) > code_start_idx(j))) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
531 doc.body{end+1}.type = "code"; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
532 lines = [code_start_idx(j), code_end_idx(j)]; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
533 doc.body{end}.content = ... |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
534 strtrim (strjoin (doc.m_source(lines(1):lines(2)), "\n")); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
535 doc.body{end}.lines = lines; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
536 doc.body{end}.output = {}; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
537 j++; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
538 endwhile |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
539 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
540 if (i <= numel (par_start_idx)) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
541 type_str = "section"; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
542 title_str = doc.m_source{par_start_idx(i)}; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
543 if (is_head (doc.m_source(par_start_idx(i)))) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
544 title_str = title_str(4:end); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
545 else |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
546 title_str = title_str(5:end); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
547 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
548 ## Append, if paragraph title is given |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
549 if (! isempty (title_str)) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
550 doc.body{end+1}.type = type_str; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
551 doc.body{end}.content = title_str; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
552 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
553 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
554 content = doc.m_source(par_start_idx(i) + 1:par_end_idx(i)); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
555 ## Strip leading "# " |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
556 content = cellfun (@(c) cellstr (c(3:end)), content); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
557 doc.body = [doc.body, parse_paragraph_content(content)]; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
558 i++; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
559 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
560 endwhile |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
561 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
562 endfunction |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
563 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
564 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
565 function p_content = parse_paragraph_content (content) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
566 ## PARSE_PARAGRAPH_CONTENT second parsing level |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
567 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
568 ## Parses the content of a paragraph (without potential title) and |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
569 ## returns a cell vector of structs, that can be appended to doc.body, |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
570 ## either of |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
571 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
572 ## a) {struct ("type", "preformatted_code", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
573 ## "content", code_str)} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
574 ## b) {struct ("type", "preformatted_text", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
575 ## "content", text_str)} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
576 ## c) {struct ("type", "bulleted_list", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
577 ## "content", {"item1", "item2", ..})} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
578 ## d) {struct ("type", "numbered_list", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
579 ## "content", {"item1", "item2", ..})} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
580 ## e) {struct ("type", "include", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
581 ## "content", file_str)} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
582 ## f) {struct ("type", "graphic", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
583 ## "content", file_str)} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
584 ## g) {struct ("type", "html", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
585 ## "content", html_str)} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
586 ## h) {struct ("type", "latex", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
587 ## "content", latex_str)} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
588 ## i) {struct ("type", "text", ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
589 ## "content", text_str)} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
590 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
591 ## Option i) might contain: |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
592 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
593 ## * Italic "_", bold "*", and monospaced "|" text |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
594 ## * Inline "$" and block "$$" LaTeX math |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
595 ## * Links |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
596 ## * Trademark symbols |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
597 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
598 p_content = cell (); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
599 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
600 if (isempty (content)) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
601 return; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
602 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
603 |
23926
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
604 ## Extract <html> and <latex> blocks recursively. |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
605 content_str = strjoin (content, "\n"); |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
606 tags = {"html", "latex"}; |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
607 for i = 1:length(tags) |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
608 tok = regexp (content_str, ... |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
609 ['(.*?)(^|\n\n)(<', tags{i}, '>)\n(.*?)\n(<\/', ... |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
610 tags{i}, '>)($|\n\n)(.*)'], "tokens", "once"); |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
611 if (! isempty (tok)) |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
612 ## If there was some text before that block --> recursion |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
613 if (! strcmpi (tok{1}, ["<", tags{i}, ">"])) |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
614 p_content = parse_paragraph_content (strsplit (tok{1}, "\n")); |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
615 tok(1:2) = []; |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
616 endif |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
617 ## Extract the block content |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
618 p_content{end+1}.type = tags{i}; |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
619 p_content{end}.content = tok{2}; |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
620 ## If there was some text after that block --> recursion |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
621 if (length (tok) == 5) |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
622 p_content = [p_content, ... |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
623 parse_paragraph_content(strsplit (tok{5}, "\n"))]; |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
624 endif |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
625 return; |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
626 endif |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
627 endfor |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
628 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
629 ## Split into blocks separated by empty lines |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
630 idx = [0, find(cellfun (@isempty, content)), length(content) + 1]; |
23926
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
631 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
632 ## For each block |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
633 for i = find (diff (idx) > 1) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
634 block = content(idx(i) + 1:idx(i+1) - 1); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
635 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
636 ## Octave code (two leading spaces) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
637 if (all (cellfun (@(c) strncmp (char (c), " ", 2), block))) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
638 p_content{end+1}.type = "preformatted_code"; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
639 block = cellfun (@(c) cellstr (c(3:end)), block); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
640 p_content{end}.content = strjoin (block, "\n"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
641 continue; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
642 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
643 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
644 ## Preformatted text (one leading space) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
645 if (all (cellfun (@(c) strncmp (char (c), " ", 1), block))) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
646 p_content{end+1}.type = "preformatted_text"; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
647 block = cellfun (@(c) cellstr (c(2:end)), block); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
648 p_content{end}.content = strjoin (block, "\n"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
649 continue; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
650 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
651 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
652 ## Bulleted list starts with "* " |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
653 if (strncmp (block{1}, "* ", 2)) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
654 p_content{end+1}.type = "bulleted_list"; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
655 tmpstr = strjoin (block, "\n"); |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
656 ## Remove first "* " |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
657 tmpstr = tmpstr(3:end); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
658 ## Split items |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
659 p_content{end}.content = strsplit (tmpstr, "\n* "); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
660 continue; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
661 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
662 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
663 ## Numbered list starts with "# " |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
664 if (strncmp (block{1}, "# ", 2)) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
665 p_content{end+1}.type = "numbered_list"; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
666 tmpstr = strjoin (block, "\n"); |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
667 ## Remove first "# " |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
668 tmpstr = tmpstr(3:end); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
669 ## Split items |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
670 p_content{end}.content = strsplit (tmpstr, "\n# "); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
671 continue; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
672 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
673 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
674 ## Include <include>fname.m</include> |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
675 if (! isempty (fname = regexpi (strjoin (block, ""), |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
676 '^<include>(.*)</include>$', |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
677 "tokens"))) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
678 ## Includes result in preformatted code |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
679 p_content{end+1}.type = "preformatted_code"; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
680 include_code = read_file_to_cellstr (strtrim ((fname{1}){1})); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
681 p_content{end}.content = strjoin (include_code, "\n"); |
22157
c5842206aaea
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
22113
diff
changeset
|
682 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
683 continue; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
684 endif |
22157
c5842206aaea
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
22113
diff
changeset
|
685 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
686 ## Graphic <<myGraphic.png>> |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
687 if (! isempty (fname = regexpi (strjoin (block, ""), |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
688 '^<<(.*)>>$', |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
689 "tokens"))) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
690 p_content{end+1}.type = "graphic"; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
691 p_content{end}.content = strtrim ((fname{1}){1}); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
692 continue; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
693 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
694 |
23926
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
695 ## Now it can be only normal text or markups belonging to normal text |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
696 ## that are handled while output generation: |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
697 ## |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
698 ## * Italic "_", bold "*", and monospaced "|" text |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
699 ## * Inline "$" and block "$$" LaTeX math |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
700 ## * Links |
58b76c741c3d
publish: improve detecion of block markup (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23923
diff
changeset
|
701 ## * Trademark symbols |
23964
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
702 p_content{end+1}.type = "text"; |
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
703 p_content{end}.content = strjoin (block, "\n"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
704 endfor |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
705 endfunction |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
706 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
707 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
708 function m_source = read_file_to_cellstr (file) |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
709 ## READ_FILE_TO_CELLSTR reads a given file line by line into a cellstring |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
710 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
711 fid = fopen (file, "r"); |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
712 i = 0; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
713 do |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
714 m_source{++i} = fgetl (fid); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
715 until (! ischar (m_source{i})) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
716 fclose (fid); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
717 m_source = m_source(1:end-1); # No EOL |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
718 endfunction |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
719 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
720 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
721 function ofile = create_output (doc, options) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
722 ## CREATE_OUTPUT creates the desired output file |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
723 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
724 formatter = []; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
725 switch (options.format) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
726 case "html" |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
727 formatter = @__publish_html_output__; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
728 case {"latex", "pdf"} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
729 formatter = @__publish_latex_output__; |
23188
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
730 otherwise |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
731 ## Custom formatter |
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
732 formatter = eval (["@__publish_", options.format, "_output__"]); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
733 endswitch |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
734 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
735 ## Use title, or if not given, the m-file name |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
736 title_str = doc.title; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
737 if (isempty (title_str)) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
738 [~, title_str] = fileparts (doc.m_source_file_name); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
739 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
740 |
23964
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
741 content = formatter ("header", |
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
742 formatter ("escape_special_chars", title_str), |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
743 format_output (doc.intro, formatter, options), |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
744 get_toc (doc.body, formatter)); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
745 content = [content, format_output(doc.body, formatter, options)]; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
746 content = [content, formatter("footer", strjoin (doc.m_source, "\n"))]; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
747 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
748 ## Write file |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
749 [~, ofile] = fileparts (doc.m_source_file_name); |
23188
e2e182a8e699
Allow custom output generators for code publishing.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23086
diff
changeset
|
750 ofile_name = [ofile, formatter("output_file_extension")]; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
751 ofile = fullfile (options.outputDir, ofile_name); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
752 fid = fopen (ofile, "w"); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
753 fputs (fid, content); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
754 fclose (fid); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
755 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
756 ## Compile LaTeX, if compiler found |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
757 if (strcmp (options.format, "pdf")) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
758 status = system ("pdflatex --version"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
759 if (status == 0) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
760 for i = 1:2 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
761 ## FIXME: This looks very likely to break when switching OS |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
762 system (["cd ", options.outputDir," && pdflatex ", ofile_name]); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
763 endfor |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
764 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
765 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
766 endfunction |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
767 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
768 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
769 function toc_cstr = get_toc (cstr, formatter) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
770 ## GET_TOC extracts the table of contents from a cellstring (e.g., doc.body) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
771 ## with each section headline as a cell in a returned cellstring. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
772 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
773 toc_cstr = cell (); |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
774 for i = 1:numel (cstr) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
775 if (strcmp (cstr{i}.type, "section")) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
776 toc_cstr{end+1} = format_text (cstr{i}.content, formatter); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
777 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
778 endfor |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
779 endfunction |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
780 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
781 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
782 function str = format_output (cstr, formatter, options) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
783 ## FORMAT_OUTPUT steps through all blocks (doc.intro or doc.body) in cstr and |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
784 ## produces a single result string with the source code in the desired output |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
785 ## format. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
786 ## |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
787 ## formatter has the only knowledge how to enforce the target format |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
788 ## and produces for each block the necessary target format source string. |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
789 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
790 str = ""; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
791 for i = 1:numel (cstr) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
792 switch (cstr{i}.type) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
793 case "code" |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
794 if (options.showCode) |
23964
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
795 str = [str, formatter("code", cstr{i}.content)]; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
796 endif |
23191
5f79bb3fdd28
* scripts/general/publish.m: Avoid creation of empty ouput blocks.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23188
diff
changeset
|
797 if ((options.evalCode) && (! isempty (cstr{i}.output))) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
798 str = [str, formatter("code_output", cstr{i}.output)]; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
799 endif |
22384
ac45255ccd2c
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22330
diff
changeset
|
800 case {"text", "section"} |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
801 str = [str, formatter(cstr{i}.type, ... |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
802 format_text (cstr{i}.content, formatter))]; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
803 case {"bulleted_list", "numbered_list"} |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
804 items = cellfun (@(str) format_text(str, formatter), ... |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
805 cstr{i}.content, "UniformOutput", false); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
806 str = [str, formatter(cstr{i}.type, items)]; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
807 otherwise |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
808 str = [str, formatter(cstr{i}.type, cstr{i}.content)]; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
809 endswitch |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
810 endfor |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
811 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
812 endfunction |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
813 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
814 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
815 function str = format_text (str, formatter) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
816 ## FORMAT_TEXT formats inline formats in strings. |
23923
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
817 ## These are: links, block/inline math, bold, italic, monospaced, (TM), (R) |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
818 |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
819 ## Helper to clarify the following regular expressions. It is suitable for |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
820 ## inline formatting, that is delimited literally at start and end by |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
821 ## `delim`. `term` is an indicating character for the end delimiter. |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
822 ## |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
823 ## Best explained by example ('^' start and '$' end of input): |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
824 ## |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
825 ## Positive matches: |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
826 ## |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
827 ## ^*bold*$ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
828 ## ^*bold*.$ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
829 ## ^(*bold*)$ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
830 ## ^ *bold* $ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
831 ## ^Text *bold* text$ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
832 ## ^*bold text*$ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
833 ## |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
834 ## Negative matches: |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
835 ## |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
836 ## ^Text*bold*text$ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
837 ## ^*bold *$ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
838 ## ^* bold* $ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
839 ## ^*bold text *$ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
840 ## |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
841 regex_helper = @(delim, term) ['(^|(?<=\s)|(?=\W))', delim, ... |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
842 '(?!\s)[^', term, ']*(?<!\s)', delim, '($|(?=\s)|(?=\W))']; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
843 |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
844 ## Regular expressions for the formats: |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
845 ## |
23923
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
846 ## 1) Links "<http://www.someurl.com>" |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
847 ## 2) Links "<octave:Function TEXT>" |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
848 ## 3) Links "<http://www.someurl.com TEXT>" |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
849 ## 4) LaTeX block math "$$x^2$$" |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
850 ## 5) LaTeX inline math "$x^2$" |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
851 ## 6) Bold *text* |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
852 ## 7) Italic _text_ |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
853 ## 8) Monospaced |text| |
23964
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
854 ## 9) (TM) or (R) |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
855 regexes = {'<\S{3,}[^\s<>]*>', ... |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
856 '<octave:[^\s<>]* *[^<>$]*>', ... |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
857 '<\S{3,}[^\s<>]* *[^<>$]*>', ... |
23923
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
858 regex_helper('\$\$', '$'), ... |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
859 regex_helper('\$', '$'), ... |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
860 regex_helper('\*', '*'), ... |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
861 regex_helper('_', '_'), ... |
23964
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
862 regex_helper('\|', '|'), ... |
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
863 '\((TM|R)\)'}; |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
864 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
865 ## Function to escape some special characters for the GNU Octave manual, |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
866 ## see https://www.gnu.org/software/texinfo/manual/texinfo/html_node/HTML-Xref-Node-Name-Expansion.html |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
867 texinfo_esc = @(str) strrep (strrep (str, "-", "_002d"), "_", "_005f"); |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
868 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
869 ## Substitute all occurrences with placeholders |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
870 placeholder_cstr = {}; |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
871 plh = 0; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
872 for i = 1:numel (regexes) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
873 cstr = regexp (str, regexes{i}, "match"); |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
874 for j = 1:numel (cstr) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
875 plh += 1; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
876 str = regexprep (str, regexes{i}, ["PUBLISHPLACEHOLDER" num2str(plh)], |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
877 "once"); |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
878 switch (i) |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
879 case 1 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
880 ## Links "<http://www.someurl.com>" |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
881 url = cstr{j}; |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
882 cstr{j} = formatter ("link", url(2:end-1), url(2:end-1)); |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
883 case 2 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
884 ## Links "<octave:Function TEXT>" |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
885 idx = strfind (cstr{j}, " "); |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
886 url = cstr{j}; |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
887 url = texinfo_esc (url(9:idx-1)); |
23317
ef94844a3c12
* publish.m: Refer to the online manual of the current Octave version.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23220
diff
changeset
|
888 v = version (); |
ef94844a3c12
* publish.m: Refer to the online manual of the current Octave version.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23220
diff
changeset
|
889 if (v(end) == '+') |
ef94844a3c12
* publish.m: Refer to the online manual of the current Octave version.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23220
diff
changeset
|
890 v = "interpreter"; |
ef94844a3c12
* publish.m: Refer to the online manual of the current Octave version.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23220
diff
changeset
|
891 endif |
ef94844a3c12
* publish.m: Refer to the online manual of the current Octave version.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23220
diff
changeset
|
892 url = sprintf ( ... |
ef94844a3c12
* publish.m: Refer to the online manual of the current Octave version.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23220
diff
changeset
|
893 "https://www.gnu.org/software/octave/doc/%s/XREF%s.html", v, url); |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
894 txt = cstr{j}; |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
895 txt = format_text (txt(idx+1:end-1), formatter); |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
896 cstr{j} = formatter ("link", url, txt); |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
897 case 3 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
898 ## Links "<http://www.someurl.com TEXT>" |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
899 idx = strfind (cstr{j}, " "); |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
900 url = cstr{j}; |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
901 url = url(2:idx-1); |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
902 txt = cstr{j}; |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
903 txt = format_text (txt(idx+1:end-1), formatter); |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
904 cstr{j} = formatter ("link", url, txt); |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
905 case 4 |
23923
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
906 ## LaTeX block math "$$" |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
907 txt = cstr{j}; |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
908 cstr{j} = formatter ("blockmath", txt(3:end-2)); |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
909 case 5 |
23923
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
910 ## LaTeX inline math "$" |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
911 txt = cstr{j}; |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
912 cstr{j} = formatter ("inlinemath", txt(2:end-1)); |
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
913 case 6 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
914 ## Bold |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
915 txt = cstr{j}; |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
916 cstr{j} = formatter ("bold", format_text (txt(2:end-1), formatter)); |
23923
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
917 case 7 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
918 ## Italic |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
919 txt = cstr{j}; |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
920 cstr{j} = formatter ("italic", format_text (txt(2:end-1), formatter)); |
23923
62dc81691d73
publish: improve detection of inline markup and fix MathJax usage.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23921
diff
changeset
|
921 case 8 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
922 ## Monospaced |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
923 txt = cstr{j}; |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
924 cstr{j} = formatter ("monospaced", format_text (txt(2:end-1), ... |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
925 formatter)); |
23964
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
926 case 9 |
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
927 ## (TM) or (R) |
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
928 txt = cstr{j}; |
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
929 cstr{j} = formatter (txt(2:end-1)); |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
930 endswitch |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
931 endfor |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
932 placeholder_cstr = [placeholder_cstr, cstr]; |
22306
2cd1afd0f12f
publish.m: prevent formatting of inline and block math.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22299
diff
changeset
|
933 endfor |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
934 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
935 ## Replace special symbols |
23964
1a0cbb573a67
publish: Improve escaping of special characters in output (bug #51782)
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23926
diff
changeset
|
936 str = formatter ("escape_special_chars", str); |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
937 |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
938 ## Restore placeholders |
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
939 for i = plh:-1:1 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
940 str = strrep (str, ["PUBLISHPLACEHOLDER" sprintf("%d", i)], |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
941 placeholder_cstr{i}); |
22674
c024fb103114
minor improvements for publish.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
22384
diff
changeset
|
942 endfor |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
943 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
944 endfunction |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
945 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
946 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
947 function doc = eval_code (doc, options) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
948 ## EVAL_CODE Third level parsing |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
949 ## |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
950 ## Generates the output of the script code and takes care of generated |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
951 ## figures. |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
952 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
953 ## Necessary as the code does not run interactively |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
954 page_screen_output (false, "local"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
955 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
956 ## Remember previously opened figures |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
957 fig_ids = findall (0, "type", "figure"); |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
958 [~, fig_name] = fileparts (doc.m_source_file_name); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
959 fig_num = 1; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
960 fig_list = struct (); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
961 |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
962 ## File used as temporary context |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
963 tmp_context = [tempname() ".var"]; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
964 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
965 ## Evaluate code, that does not appear in the output. |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
966 eval_code_helper (tmp_context, options.codeToEvaluate); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
967 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
968 ## Create a new figure, if there are existing plots |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
969 if (! isempty (fig_ids) && options.useNewFigure) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
970 figure (); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
971 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
972 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
973 for i = 1:numel (doc.body) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
974 if (strcmp (doc.body{i}.type, "code")) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
975 r = doc.body{i}.lines; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
976 code_str = strjoin (doc.m_source(r(1):r(2)), "\n"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
977 if (options.catchError) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
978 try |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
979 doc.body{i}.output = eval_code_helper (tmp_context, code_str); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
980 catch err |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
981 doc.body{i}.output = cellstr (["error: ", err.message, ... |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
982 "\n\tin:\n\n", code_str]); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
983 end_try_catch |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
984 else |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
985 doc.body{i}.output = eval_code_helper (tmp_context, code_str); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
986 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
987 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
988 ## Check for newly created figures ... |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
989 fig_ids_new = setdiff (findall (0, "type", "figure"), fig_ids); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
990 ## ... and save them |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
991 for j = 1:numel (fig_ids_new) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
992 drawnow (); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
993 if (isempty (get (fig_ids_new(j), "children"))) |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
994 continue; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
995 endif |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
996 fname = [fig_name, "-", sprintf("%d", fig_num)]; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
997 if (strncmp (options.imageFormat, "eps", 3)) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
998 fname = [fname ".eps"]; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
999 else |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1000 fname = [fname "." options.imageFormat]; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1001 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1002 print_opts = {fig_ids_new(j), ... |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1003 fullfile(options.outputDir, fname), ... |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1004 ["-d" options.imageFormat], "-color"}; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1005 if (! isempty (options.maxWidth) && ! isempty (options.maxHeight)) |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
1006 print_opts{end+1} = sprintf ("-S%d,%d", options.maxWidth, |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
1007 options.maxHeight); |
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
1008 elseif (! isempty (options.maxWidth) || ! isempty (options.maxHeight)) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1009 warning (["publish: specify both options.maxWidth ", ... |
23549
c8daadf7543b
publish.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents:
23548
diff
changeset
|
1010 "and options.maxHeight"]); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1011 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1012 print (print_opts{:}); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1013 fig_num++; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1014 delete (fig_ids_new(j)); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1015 fig_elem = cell (); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1016 fig_elem{1} = struct ("type", "graphic", "content", fname); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1017 if (isfield (fig_list, num2str (i))) |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1018 fig_elem = [getfield(fig_list, sprintf ("%d", i)), fig_elem]; |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1019 endif |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1020 fig_list = setfield (fig_list, sprintf ("%d", i), fig_elem); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1021 ## Create a new figure, if there are existing plots |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1022 if (isempty (setdiff (findall (0, "type", "figure"), fig_ids)) ... |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1023 && ! isempty (fig_ids) && options.useNewFigure) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1024 figure (); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1025 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1026 endfor |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1027 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1028 ## Truncate output to desired length |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1029 if (options.maxOutputLines < length (doc.body{i}.output)) |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1030 doc.body{i}.output = doc.body{i}.output(1:options.maxOutputLines); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1031 endif |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1032 doc.body{i}.output = strjoin (doc.body{i}.output, "\n"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1033 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1034 endfor |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1035 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1036 ## Close any figures opened by publish function |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1037 delete (setdiff (findall (0, "type", "figure"), fig_ids)); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1038 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1039 ## Remove temporary context |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1040 unlink (tmp_context); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1041 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1042 ## Insert figures to document |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1043 fig_code_blocks = fieldnames (fig_list); |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1044 body_offset = 0; |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1045 for i = 1:numel (fig_code_blocks) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1046 elems = getfield (fig_list, fig_code_blocks{i}); |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1047 ## Compute index where the figure(s) has to be inserted |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1048 j = str2double (fig_code_blocks{i}) + body_offset; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1049 doc.body = [doc.body(1:j), elems, doc.body(j+1:end)]; |
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1050 body_offset = body_offset + numel (elems); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1051 endfor |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1052 |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1053 endfunction |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1054 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1055 |
23921
ab1aa0e57b72
publish: evaluate code in a function scope, allow "clear all" (bug #51096)
Mike Miller <mtmiller@octave.org>
parents:
23549
diff
changeset
|
1056 function cstr = eval_code_helper (context, code) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1057 ## EVAL_CODE_HELPER evaluates a given string with Octave code in an extra |
23547
8133a5041662
publish.m: Fix corruption of results for some code inputs (bug #51178).
Rik <rik@octave.org>
parents:
23219
diff
changeset
|
1058 ## temporary context and returns a cellstring with the eval output. |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1059 |
23921
ab1aa0e57b72
publish: evaluate code in a function scope, allow "clear all" (bug #51096)
Mike Miller <mtmiller@octave.org>
parents:
23549
diff
changeset
|
1060 if (isempty (code)) |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1061 return; |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1062 endif |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1063 |
23921
ab1aa0e57b72
publish: evaluate code in a function scope, allow "clear all" (bug #51096)
Mike Miller <mtmiller@octave.org>
parents:
23549
diff
changeset
|
1064 load_snippet = ""; |
ab1aa0e57b72
publish: evaluate code in a function scope, allow "clear all" (bug #51096)
Mike Miller <mtmiller@octave.org>
parents:
23549
diff
changeset
|
1065 if (exist (context, "file") == 2) |
24370
b1d1229d9e83
maint: Use single quotes to simplify excessive backslash escapes in code.
Rik <rik@octave.org>
parents:
23964
diff
changeset
|
1066 load_snippet = sprintf ('load ("%s");', context); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1067 endif |
24370
b1d1229d9e83
maint: Use single quotes to simplify excessive backslash escapes in code.
Rik <rik@octave.org>
parents:
23964
diff
changeset
|
1068 save_snippet = sprintf ('save ("-binary", "%s");', context); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1069 |
23921
ab1aa0e57b72
publish: evaluate code in a function scope, allow "clear all" (bug #51096)
Mike Miller <mtmiller@octave.org>
parents:
23549
diff
changeset
|
1070 eval (sprintf ("function __eval__ ()\n%s\n%s\n%s\nendfunction", |
ab1aa0e57b72
publish: evaluate code in a function scope, allow "clear all" (bug #51096)
Mike Miller <mtmiller@octave.org>
parents:
23549
diff
changeset
|
1071 load_snippet, code, save_snippet)); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1072 |
23921
ab1aa0e57b72
publish: evaluate code in a function scope, allow "clear all" (bug #51096)
Mike Miller <mtmiller@octave.org>
parents:
23549
diff
changeset
|
1073 cstr = strsplit (evalc ("__eval__"), "\n"); |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1074 endfunction |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1075 |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1076 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1077 ## FIXME: Missing any functional BIST tests |
23548 | 1078 ## FIXME: Need to create a temporary file for use with error testing |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1079 |
22705
e9a0aa0a49ed
Overhaul publish function and it's private helper functions.
Rik <rik@octave.org>
parents:
22674
diff
changeset
|
1080 ## Test input validation |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1081 %!error publish () |
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1082 %!error publish (1) |
22706 | 1083 %!error <FILE does not exist> publish ("%%_non_existent_file_%%.m") |
1084 %!error <only script files can be published> publish ("publish.m") | |
22113
b6f482e29afd
New functions publish.m and grabcode.m (patch #9048).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
diff
changeset
|
1085 %!error publish ("test_script.m", "format", "html", "showCode") |