Mercurial > hg > octave-nkf
annotate scripts/strings/untabify.m @ 20511:eca5aa3225f4
imshow.m: Add support for 'parent' property (bug #45473).
* imshow.m: Add cell variable prop_val_args{:} when calling image or imagesc.
Populate prop_val_args with {"parent", hparent} when "parent" argument given
to imshow. Remove code commented out in 2015/05/1 which has not caused any
problems. Add warning that arguments "border" and "reduce" are not supported.
author | Rik <rik@octave.org> |
---|---|
date | Sun, 05 Jul 2015 13:55:56 -0700 |
parents | aa36fb998a4d |
children |
rev | line source |
---|---|
19898
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
17795
diff
changeset
|
1 ## Copyright (C) 2010-2015 Ben Abbott |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11563
diff
changeset
|
2 ## |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
3 ## This file is part of Octave. |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
4 ## |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
17795
0a8c35ae5ce1
maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
8 ## your option) any later version. |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11563
diff
changeset
|
9 ## |
17795
0a8c35ae5ce1
maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
10 ## Octave is distributed in the hope that it will be useful, |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
11 ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
13 ## GNU General Public License for more details. |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11563
diff
changeset
|
14 ## |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
16 ## along with Octave; see the file COPYING. If not, see |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
18 |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
11563
3c6e8aaa9555
Grammarcheck m-files before 3.4 release.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
20 ## @deftypefn {Function File} {} untabify (@var{t}) |
3c6e8aaa9555
Grammarcheck m-files before 3.4 release.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
21 ## @deftypefnx {Function File} {} untabify (@var{t}, @var{tw}) |
3c6e8aaa9555
Grammarcheck m-files before 3.4 release.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
22 ## @deftypefnx {Function File} {} untabify (@var{t}, @var{tw}, @var{deblank}) |
20374
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
23 ## Replace TAB characters in @var{t} with spaces. |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
24 ## |
20374
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
25 ## The input, @var{t}, may be either a 2-D character array, or a cell array of |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
26 ## character strings. The output is the same class as the input. |
20391
aa36fb998a4d
maint: Remove unnecessary whitespace at end of lines.
Rik <rik@octave.org>
parents:
20374
diff
changeset
|
27 ## |
20374
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
28 ## The tab width is specified by @var{tw}, and defaults to eight. |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
29 ## |
20374
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
30 ## If the optional argument @var{deblank} is true, then the spaces will be |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
31 ## removed from the end of the character data. |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
32 ## |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
33 ## The following example reads a file and writes an untabified version of the |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
34 ## same file with trailing spaces stripped. |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
35 ## |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
36 ## @example |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
37 ## @group |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
38 ## fid = fopen ("tabbed_script.m"); |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
39 ## text = char (fread (fid, "uchar")'); |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
40 ## fclose (fid); |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
41 ## fid = fopen ("untabified_script.m", "w"); |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
42 ## text = untabify (strsplit (text, "\n"), 8, true); |
11115
965766039d93
finish adding untabify.m to build system
John W. Eaton <jwe@octave.org>
parents:
11102
diff
changeset
|
43 ## fprintf (fid, "%s\n", text@{:@}); |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
44 ## fclose (fid); |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
45 ## @end group |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
46 ## @end example |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
47 ## |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
48 ## @seealso{strjust, strsplit, deblank} |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
49 ## @end deftypefn |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
50 |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
51 ## Author: Ben Abbott <bpabbott@mac.com> |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
52 ## Created: 2010-10-15 |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
53 |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11191
diff
changeset
|
54 function s = untabify (t, tw = 8, dblank = false) |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
55 |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
56 if (nargin < 1 || nargin > 3) |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
57 print_usage (); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
58 elseif (! (ischar (t) || iscellstr (t))) |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
59 error ("untabify: T must be a string or cellstring"); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
60 endif |
13141
e81ddf9cacd5
maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
12929
diff
changeset
|
61 |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
62 if (ischar (t)) |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
63 s = replace_tabs (t, tw); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
64 else |
17386
6dbc866379e2
Replace cellfun() occurrences with faster code where possible.
Rik <rik@octave.org>
parents:
14868
diff
changeset
|
65 s = cellfun (@replace_tabs, t, {tw}, "uniformoutput", false); |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
66 endif |
13141
e81ddf9cacd5
maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
12929
diff
changeset
|
67 |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
68 if (dblank) |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
69 s = deblank (s); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
70 endif |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
71 |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
72 endfunction |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
73 |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
74 function s = replace_tabs (t, tw) |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
75 |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
76 if (ndims (t) != 2) |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
77 error ("untabify: character strings to untabify must have 2 dimensions"); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
78 endif |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
79 |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
80 if (isempty (t)) |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
81 s = t; |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
82 else |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
83 nr = rows (t); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
84 sc = cell (nr, 1); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
85 for j = 1:nr |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
86 n = 1:numel (t(j,:)); |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
87 m = find (t(j,:) == "\t"); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
88 t(j,m) = " "; |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
89 for i = 1:numel (m) |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
90 k = tw * ceil (n(m(i)) / tw); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
91 dn = k - n(m(i)); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
92 n(m(i):end) += dn; |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
93 endfor |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
94 sc{j} = blanks (n(end)); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
95 sc{j}(n) = t(j,:); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
96 endfor |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
97 s = char (sc); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
98 endif |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
99 |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
100 endfunction |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
101 |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
102 |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
103 %!test |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
104 %! s = untabify ("\thello\t"); |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
105 %! assert (s, [blanks(8) "hello" blanks(3)]); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
106 |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
107 %!test |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
108 %! s = untabify ("\thello\t", 2); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
109 %! assert (s, [blanks(2) "hello" blanks(1)]); |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
110 |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
111 %!test |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
112 %! s = untabify ("\thello\t", 4, true); |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
113 %! assert (s, [blanks(4) "hello"]); |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
114 |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
115 %!assert (isempty (untabify (""))) |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
116 |
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
117 %!test |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
118 %! s = char (randi ([97 97+25], 3, 3)); |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
119 %! assert (untabify (s), char (untabify (cellstr (s)))); |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
120 |
12929
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
121 %!error untabify () |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
122 %!error untabify (1,2,3,4) |
135ec8155eeb
untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
123 %!error <must be a string> untabify (1) |
11102
eab173e1e80c
untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
124 |