Mercurial > hg > octave-nkf
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 |
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 |