annotate scripts/deprecated/split.m @ 10549:95c3e38098bf

Untabify .m scripts
author Rik <code@nomad.inbox5.com>
date Fri, 23 Apr 2010 11:28:50 -0700
parents 923c7cb7f13f
children 1740012184f9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8920
eb63fbe60fab update copyright notices
John W. Eaton <jwe@octave.org>
parents: 8878
diff changeset
1 ## Copyright (C) 1996, 1999, 2000, 2005, 2006, 2007, 2009 Kurt Hornik
2325
b5568c31ee2c [project @ 1996-07-15 22:20:21 by jwe]
jwe
parents: 2314
diff changeset
2 ##
2313
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
3 ## This file is part of Octave.
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
4 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
6 ## under the terms of the GNU General Public License as published by
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6046
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6046
diff changeset
8 ## your option) any later version.
2313
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
9 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
13 ## General Public License for more details.
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
14 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
15 ## You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6046
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6046
diff changeset
17 ## <http://www.gnu.org/licenses/>.
2274
9750746d7da5 [project @ 1996-05-24 04:06:42 by jwe]
jwe
parents:
diff changeset
18
3361
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 3320
diff changeset
19 ## -*- texinfo -*-
5462
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
20 ## @deftypefn {Function File} {} split (@var{s}, @var{t}, @var{n})
9209
923c7cb7f13f Simplify TeXinfo files by eliminating redundant @iftex followed by @tex construction.
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
21 ## This function has been deprecated. Use @code{char (strsplit (s, t))}
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents: 8442
diff changeset
22 ## instead.
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents: 8442
diff changeset
23 ## @end deftypefn
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents: 8442
diff changeset
24
3361
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 3320
diff changeset
25 ## Divides the string @var{s} into pieces separated by @var{t}, returning
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 3320
diff changeset
26 ## the result in a string array (padded with blanks to form a valid
5462
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
27 ## matrix). If the optional input @var{n} is supplied, split @var{s}
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
28 ## into at most @var{n} different pieces.
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
29 ##
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
30 ## For example,
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3361
diff changeset
31 ##
3361
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 3320
diff changeset
32 ## @example
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 3320
diff changeset
33 ## split ("Test string", "t")
8442
502e58a0d44f Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 8168
diff changeset
34 ## @result{}
502e58a0d44f Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 8168
diff changeset
35 ## "Tes "
3361
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 3320
diff changeset
36 ## " s "
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 3320
diff changeset
37 ## "ring"
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 3320
diff changeset
38 ## @end example
5462
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
39 ##
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
40 ## @example
8442
502e58a0d44f Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 8168
diff changeset
41 ## split ("Test string", "t s", 2)
502e58a0d44f Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 8168
diff changeset
42 ## @result{}
502e58a0d44f Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 8168
diff changeset
43 ## "Tes "
502e58a0d44f Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 8168
diff changeset
44 ## "tring"
5462
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
45 ## @end example
8442
502e58a0d44f Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 8168
diff changeset
46 ## @seealso{strtok, index}
3361
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 3320
diff changeset
47 ## @end deftypefn
2311
2b5788792cad [project @ 1996-07-11 20:18:38 by jwe]
jwe
parents: 2303
diff changeset
48
5428
2a16423e4aa0 [project @ 2005-08-23 18:38:27 by jwe]
jwe
parents: 5307
diff changeset
49 ## Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
2355
c9f70d39255f [project @ 1996-08-20 23:30:54 by jwe]
jwe
parents: 2325
diff changeset
50 ## Adapted-By: jwe
2314
949ab8eba8bc [project @ 1996-07-12 03:58:02 by jwe]
jwe
parents: 2313
diff changeset
51
8878
ebb8c1dcf4d3 split.m: add warning, note version
John W. Eaton <jwe@octave.org>
parents: 8877
diff changeset
52 ## Deprecated in version 3.2
ebb8c1dcf4d3 split.m: add warning, note version
John W. Eaton <jwe@octave.org>
parents: 8877
diff changeset
53
5462
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
54 function m = split (s, t, n)
2325
b5568c31ee2c [project @ 1996-07-15 22:20:21 by jwe]
jwe
parents: 2314
diff changeset
55
8878
ebb8c1dcf4d3 split.m: add warning, note version
John W. Eaton <jwe@octave.org>
parents: 8877
diff changeset
56 persistent warned = false;
ebb8c1dcf4d3 split.m: add warning, note version
John W. Eaton <jwe@octave.org>
parents: 8877
diff changeset
57 if (! warned)
ebb8c1dcf4d3 split.m: add warning, note version
John W. Eaton <jwe@octave.org>
parents: 8877
diff changeset
58 warned = true;
ebb8c1dcf4d3 split.m: add warning, note version
John W. Eaton <jwe@octave.org>
parents: 8877
diff changeset
59 warning ("Octave:deprecated-function",
ebb8c1dcf4d3 split.m: add warning, note version
John W. Eaton <jwe@octave.org>
parents: 8877
diff changeset
60 "split is obsolete and will be removed from a future version of Octave; please use strsplit instead");
ebb8c1dcf4d3 split.m: add warning, note version
John W. Eaton <jwe@octave.org>
parents: 8877
diff changeset
61 endif
ebb8c1dcf4d3 split.m: add warning, note version
John W. Eaton <jwe@octave.org>
parents: 8877
diff changeset
62
5462
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
63 if (nargin == 2 || nargin == 3)
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
64 if (nargin == 2)
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
65 n = length (s);
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
66 endif
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
67
5443
ec8c33dcd1bf [project @ 2005-09-08 01:40:57 by jwe]
jwe
parents: 5428
diff changeset
68 if (ischar (s) && ischar (t))
5219
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
69
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
70 l_s = length (s);
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
71 l_t = length (t);
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
72
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
73 if (l_s == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
74 m = "";
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
75 return;
5219
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
76 elseif (l_t == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
77 m = s';
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
78 return;
5219
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
79 elseif (l_s < l_t)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
80 error ("split: s must not be shorter than t");
5219
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
81 endif
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
82
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
83 if (min (size (s)) != 1 || min (size (t)) != 1)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
84 error("split: multi-line strings are not supported");
5219
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
85 endif
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
86
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
87 ind = findstr (s, t, 0);
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
88 if (length (ind) == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
89 m = s;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
90 return;
5462
74804828df1a [project @ 2005-09-22 18:36:22 by jwe]
jwe
parents: 5443
diff changeset
91 elseif (n - 1 < length(ind))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
92 ind = ind(1:n-1);
5219
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
93 endif
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
94 ind2 = [1, ind+l_t];
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
95 ind = [ind, l_s+1];
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
96
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
97 ind_diff = ind-ind2;
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
98
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
99 ## Create a matrix of the correct size that's filled with spaces.
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
100 m_rows = length (ind);
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
101 m_cols = max (ind_diff);
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
102 m = repmat (" ", m_rows, m_cols);
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
103
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
104 ## Copy the strings to the matrix.
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
105 for i = 1:length (ind)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
106 tmp = ind2(i):(ind(i)-1);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9209
diff changeset
107 m(i,1:length(tmp)) = s(tmp);
5219
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
108 endfor
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
109 else
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
110 error ("split: both s and t must be strings");
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
111 endif
96661dd79291 [project @ 2005-03-16 20:44:39 by jwe]
jwe
parents: 5218
diff changeset
112 else
6046
34f96dd5441b [project @ 2006-10-10 16:10:25 by jwe]
jwe
parents: 5473
diff changeset
113 print_usage ();
2274
9750746d7da5 [project @ 1996-05-24 04:06:42 by jwe]
jwe
parents:
diff changeset
114 endif
2325
b5568c31ee2c [project @ 1996-07-15 22:20:21 by jwe]
jwe
parents: 2314
diff changeset
115
2274
9750746d7da5 [project @ 1996-05-24 04:06:42 by jwe]
jwe
parents:
diff changeset
116 endfunction
7411
83a8781b529d [project @ 2008-01-22 21:52:25 by jwe]
jwe
parents: 7017
diff changeset
117
83a8781b529d [project @ 2008-01-22 21:52:25 by jwe]
jwe
parents: 7017
diff changeset
118 %!assert(all (all (split ("Test string", "t") == ["Tes "; " s "; "ring"])));
83a8781b529d [project @ 2008-01-22 21:52:25 by jwe]
jwe
parents: 7017
diff changeset
119
83a8781b529d [project @ 2008-01-22 21:52:25 by jwe]
jwe
parents: 7017
diff changeset
120 %!error split ();
83a8781b529d [project @ 2008-01-22 21:52:25 by jwe]
jwe
parents: 7017
diff changeset
121
83a8781b529d [project @ 2008-01-22 21:52:25 by jwe]
jwe
parents: 7017
diff changeset
122 %!assert(all (strcmp (split ("foo bar baz", " ", 2), ["foo"; "bar baz"])));
83a8781b529d [project @ 2008-01-22 21:52:25 by jwe]
jwe
parents: 7017
diff changeset
123
83a8781b529d [project @ 2008-01-22 21:52:25 by jwe]
jwe
parents: 7017
diff changeset
124 %!error split ("foo", "bar", 3, 4);
83a8781b529d [project @ 2008-01-22 21:52:25 by jwe]
jwe
parents: 7017
diff changeset
125
8168
dadf478ddc42 fix empty string assignment
Jaroslav Hajek <highegg@gmail.com>
parents: 7411
diff changeset
126 %!assert (all (strcmp (split("road//to/hell","/"), ["road"; " "; "to "; "hell"])))
dadf478ddc42 fix empty string assignment
Jaroslav Hajek <highegg@gmail.com>
parents: 7411
diff changeset
127
dadf478ddc42 fix empty string assignment
Jaroslav Hajek <highegg@gmail.com>
parents: 7411
diff changeset
128 %!assert (all (strcmp (split("/road/to/hell/","/"), [" "; "road"; "to "; "hell"; " "])))
dadf478ddc42 fix empty string assignment
Jaroslav Hajek <highegg@gmail.com>
parents: 7411
diff changeset
129
dadf478ddc42 fix empty string assignment
Jaroslav Hajek <highegg@gmail.com>
parents: 7411
diff changeset
130