annotate scripts/strings/untabify.m @ 15063:36cbcc37fdb8

Refactor configure.ac to make it more understandable. Use common syntax for messages in config.h Correct typos, refer to libraries in all caps, use two spaces after period. Follow Autoconf guidelines and place general tests before specific tests. * configure.ac, m4/acinclude.m4: Use common syntax for messages in config.h Correct typos, refer to libraries in all caps, use two spaces after period. Follow Autoconf guidelines and place general tests before specific tests.
author Rik <rik@octave.org>
date Tue, 31 Jul 2012 10:28:51 -0700
parents 5d3a684236b0
children 6dbc866379e2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14138
72c96de7a403 maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents: 13141
diff changeset
1 ## Copyright (C) 2010-2012 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
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11563
diff changeset
7 ## the Free Software Foundation; either version 2 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 ##
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
10 ## This program is distributed in the hope that it will be useful,
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})
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
23 ## Replace TAB characters in @var{t}, with spaces.
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
24 ## The tab width is specified by @var{tw}, or defaults to eight.
11563
3c6e8aaa9555 Grammarcheck m-files before 3.4 release.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
25 ## The input, @var{t}, may be either a 2-D character array, or a cell
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
26 ## array of character strings. The output is the same class
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
27 ## as the input.
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
28 ##
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
29 ## If the optional argument @var{deblank} is true, then the spaces will
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
30 ## be removed from the end of the character data.
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
31 ##
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
32 ## The following example reads a file and writes an untabified version
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
33 ## of the same file with trailing spaces stripped.
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
34 ##
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
35 ## @example
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
36 ## @group
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
37 ## fid = fopen ("tabbed_script.m");
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
38 ## text = char (fread (fid, "uchar")');
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
39 ## fclose (fid);
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
40 ## fid = fopen ("untabified_script.m", "w");
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
41 ## 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
42 ## fprintf (fid, "%s\n", text@{:@});
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
43 ## fclose (fid);
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
44 ## @end group
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
45 ## @end example
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
46 ##
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
47 ## @seealso{strjust, strsplit, deblank}
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
48 ## @end deftypefn
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
49
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
50 ## Author: Ben Abbott <bpabbott@mac.com>
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
51 ## Created: 2010-10-15
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
52
11469
c776f063fefe Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents: 11191
diff changeset
53 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
54
12929
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
55 if (nargin < 1 || nargin > 3)
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
56 print_usage ();
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
57 elseif (! (ischar (t) || iscellstr (t)))
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
58 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
59 endif
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 12929
diff changeset
60
12929
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
61 if (ischar (t))
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
62 s = replace_tabs (t, tw);
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
63 else
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
64 s = cellfun (@(str) replace_tabs (str, tw), t, "uniformoutput", false);
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
65 endif
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 12929
diff changeset
66
12929
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
67 if (dblank)
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
68 s = deblank (s);
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
69 endif
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
70
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
71 endfunction
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
72
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
73 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
74
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
75 if (ndims (t) != 2)
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
76 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
77 endif
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
78
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
79 if (isempty (t))
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
80 s = t;
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
81 else
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
82 nr = rows (t);
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
83 sc = cell (nr, 1);
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
84 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
85 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
86 m = find (t(j,:) == "\t");
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
87 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
88 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
89 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
90 dn = k - n(m(i));
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
91 n(m(i):end) += dn;
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
92 endfor
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
93 sc{j} = blanks (n(end));
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
94 sc{j}(n) = t(j,:);
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
95 endfor
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
96 s = char (sc);
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
97 endif
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
98
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
99 endfunction
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
100
12929
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
101
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
102 %!test
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
103 %! s = untabify ("\thello\t");
12929
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
104 %! 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
105
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
106 %!test
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
107 %! s = untabify ("\thello\t", 2);
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
108 %! assert (s, [blanks(2) "hello" blanks(1)]);
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
109
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
110 %!test
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
111 %! 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
112 %! assert (s, [blanks(4) "hello"]);
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
113
12929
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
114 %!assert (isempty (untabify ("")))
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
115
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
116 %!test
12929
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
117 %! 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
118 %! assert (untabify (s), char (untabify (cellstr (s))));
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
119
12929
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
120 %!error untabify ()
135ec8155eeb untabify.m: Place input validation first. Simplify assert tests.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
121 %!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
122 %!error <must be a string> untabify (1)
11102
eab173e1e80c untabify.m: New function to untabify text.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
123