Mercurial > hg > octave-lyh
annotate scripts/io/strread.m @ 11575:d6619410e79c
Spellcheck documentation before 3.4 release.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Wed, 19 Jan 2011 21:16:13 -0800 |
parents | 90f8d12f1964 |
children | c792872f8942 |
rev | line source |
---|---|
11523 | 1 ## Copyright (C) 2009-2011 Eric Chassande-Mottin, CNRS (France) |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
2 ## |
11104 | 3 ## This file is part of Octave. |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
4 ## |
11104 | 5 ## Octave is free software; you can redistribute it and/or modify it |
6 ## under the terms of the GNU General Public License as published by | |
7 ## the Free Software Foundation; either version 3 of the License, or (at | |
8 ## your option) any later version. | |
9 ## | |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
14 ## |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
11104 | 16 ## along with Octave; see the file COPYING. If not, see |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
18 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
20 ## @deftypefn {Function File} {[@var{a}, @dots{}] =} strread (@var{str}) |
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
21 ## @deftypefnx {Function File} {[@var{a}, @dots{}] =} strread (@var{str}, @var{format}) |
11150 | 22 ## @deftypefnx {Function File} {[@var{a}, @dots{}] =} strread (@var{str}, @var{format}, @var{prop1}, @var{value1}, @dots{}) |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
23 ## Read data from a string. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
24 ## |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
25 ## The string @var{str} is split into words that are repeatedly matched to the |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
26 ## specifiers in @var{format}. The first word is matched to the first |
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
27 ## specifier, |
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
28 ## the second to the second specifier and so forth. If there are more words |
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
29 ## than |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
30 ## specifiers, the process is repeated until all words have been processed. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
31 ## |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
32 ## The string @var{format} describes how the words in @var{str} should be |
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
33 ## parsed. |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
34 ## It may contain any combination of the following specifiers: |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
35 ## @table @code |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
36 ## @item %s |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
37 ## The word is parsed as a string. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
38 ## |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
39 ## @item %d |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
40 ## @itemx %f |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
41 ## The word is parsed as a number. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
42 ## |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
43 ## @item %* |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
44 ## The word is skipped. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
45 ## @end table |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
46 ## |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
47 ## Parsed word corresponding to the first specifier are returned in the first |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
48 ## output argument and likewise for the rest of the specifiers. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
49 ## |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
50 ## By default, @var{format} is @t{"%f"}, meaning that numbers are read from |
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
51 ## @var{str}. |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
52 ## |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
53 ## For example, the string |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
54 ## |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
55 ## @example |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
56 ## @group |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
57 ## @var{str} = "\ |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
58 ## Bunny Bugs 5.5\n\ |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
59 ## Duck Daffy -7.5e-5\n\ |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
60 ## Penguin Tux 6" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
61 ## @end group |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
62 ## @end example |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
63 ## |
10846
a4f482e66b65
Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
64 ## @noindent |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
65 ## can be read using |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
66 ## |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
67 ## @example |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
68 ## [@var{a}, @var{b}, @var{c}] = strread (@var{str}, "%s %s %f"); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
69 ## @end example |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
70 ## |
11575
d6619410e79c
Spellcheck documentation before 3.4 release.
Rik <octave@nomad.inbox5.com>
parents:
11564
diff
changeset
|
71 ## The behavior of @code{strread} can be changed via property-value |
11147
a81994607ca0
document textscan and textread
John W. Eaton <jwe@octave.org>
parents:
11127
diff
changeset
|
72 ## pairs. The following properties are recognized: |
a81994607ca0
document textscan and textread
John W. Eaton <jwe@octave.org>
parents:
11127
diff
changeset
|
73 ## |
a81994607ca0
document textscan and textread
John W. Eaton <jwe@octave.org>
parents:
11127
diff
changeset
|
74 ## @table @code |
a81994607ca0
document textscan and textread
John W. Eaton <jwe@octave.org>
parents:
11127
diff
changeset
|
75 ## @item "commentstyle" |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
76 ## Parts of @var{str} are considered comments and will be skipped. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
77 ## @var{value} is the comment style and can be any of the following. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
78 ## @itemize |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
79 ## @item "shell" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
80 ## Everything from @code{#} characters to the nearest end-line is skipped. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
81 ## |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
82 ## @item "c" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
83 ## Everything between @code{/*} and @code{*/} is skipped. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
84 ## |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
85 ## @item "c++" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
86 ## Everything from @code{//} characters to the nearest end-line is skipped. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
87 ## |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
88 ## @item "matlab" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
89 ## Everything from @code{%} characters to the nearest end-line is skipped. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
90 ## @end itemize |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
91 ## |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
92 ## @item "delimiter" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
93 ## Any character in @var{value} will be used to split @var{str} into words. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
94 ## |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
95 ## @item "emptyvalue" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
96 ## Parts of the output where no word is available is filled with @var{value}. |
11150 | 97 ## @end table |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
98 ## |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
99 ## @seealso{textread, load, dlmread, fscanf} |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
100 ## @end deftypefn |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
101 |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11343
diff
changeset
|
102 function varargout = strread (str, format = "%f", varargin) |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
103 ## Check input |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
104 if (nargin < 1) |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
105 print_usage (); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
106 endif |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
107 |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11343
diff
changeset
|
108 if (!ischar (str) || !ischar (format)) |
11472
1740012184f9
Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents:
11469
diff
changeset
|
109 error ("strread: STR and FORMAT arguments must be strings"); |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
110 endif |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
111 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
112 ## Parse options |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
113 comment_flag = false; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
114 numeric_fill_value = 0; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
115 white_spaces = " \n\r\t\b"; |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
116 delimiter_str = ""; |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
117 for n = 1:2:length (varargin) |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
118 switch (lower (varargin {n})) |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
119 case "commentstyle" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
120 comment_flag = true; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
121 switch (lower (varargin {n+1})) |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
122 case "c" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
123 comment_specif = {"/*", "*/"}; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
124 case "c++" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
125 comment_specif = {"//", "\n"}; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
126 case "shell" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
127 comment_specif = {"#", "\n"}; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
128 case "matlab" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
129 comment_specif = {"%", "\n"}; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
130 otherwise |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
131 warning ("strread: unknown comment style '%s'", val); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
132 endswitch |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
133 case "delimiter" |
10549 | 134 delimiter_str = varargin {n+1}; |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
135 case "emptyvalue" |
10549 | 136 numeric_fill_value = varargin {n+1}; |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
137 case "bufsize" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
138 ## XXX: We could synthesize this, but that just seems weird... |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
139 warning ("strread: property \"bufsize\" is not implemented"); |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
140 case "whitespace" |
10549 | 141 white_spaces = varargin {n+1}; |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
142 case "expchars" |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
143 warning ("strread: property \"expchars\" is not implemented"); |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
144 otherwise |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
145 warning ("strread: unknown property \"%s\"", varargin {n}); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
146 endswitch |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
147 endfor |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
148 if (isempty (delimiter_str)) |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
149 delimiter_str = white_spaces; |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
150 endif |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
151 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
152 ## Parse format string |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11343
diff
changeset
|
153 idx = strfind (format, "%")'; |
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11343
diff
changeset
|
154 specif = format ([idx, idx+1]); |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
155 nspecif = length (idx); |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11343
diff
changeset
|
156 idx_star = strfind (format, "%*"); |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
157 nfields = length (idx) - length (idx_star); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
158 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
159 if (max (nargout, 1) != nfields) |
11472
1740012184f9
Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents:
11469
diff
changeset
|
160 error ("strread: the number of output variables must match that specified byFORMAT"); |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
161 endif |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
162 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
163 ## Remove comments |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
164 if (comment_flag) |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
165 cstart = strfind (str, comment_specif{1}); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
166 cstop = strfind (str, comment_specif{2}); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
167 if (length (cstart) > 0) |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
168 ## Ignore nested openers. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
169 [idx, cidx] = unique (lookup (cstop, cstart), "first"); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
170 if (idx(end) == length (cstop)) |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
171 cidx(end) = []; # Drop the last one if orphaned. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
172 endif |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
173 cstart = cstart(cidx); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
174 endif |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
175 if (length (cstop) > 0) |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
176 ## Ignore nested closers. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
177 [idx, cidx] = unique (lookup (cstart, cstop), "first"); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
178 if (idx(1) == 0) |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
179 cidx(1) = []; # Drop the first one if orphaned. |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
180 endif |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
181 cstop = cstop(cidx); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
182 endif |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
183 len = length (str); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
184 c2len = length (comment_specif{2}); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
185 str = cellslices (str, [1, cstop + c2len], [cstart - 1, len]); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
186 str = [str{:}]; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
187 endif |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
188 |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
189 ## Determine the number of words per line |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11343
diff
changeset
|
190 format = strrep (format, "%", " %"); |
11564 | 191 [~, ~, ~, fmt_words] = regexp (format, "[^ ]+"); |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
192 |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
193 num_words_per_line = numel (fmt_words); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
194 for m = 1:numel(fmt_words) |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
195 ## Convert formats such as "%Ns" to "%s" (see the FIXME below) |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
196 if (length (fmt_words{m}) > 2) |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
197 if (strcmp (fmt_words{m}(1:2), "%*")) |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
198 fmt_words{m} = "%*"; |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
199 elseif (fmt_words{m}(1) == "%") |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
200 fmt_words{m} = fmt_words{m}([1, end]); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
201 endif |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
202 endif |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
203 endfor |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
204 |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
205 ## Split 'str' into words |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
206 words = split_by (str, delimiter_str); |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
207 num_words = numel (words); |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
208 num_lines = ceil (num_words / num_words_per_line); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
209 |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
210 ## For each specifier |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
211 k = 1; |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
212 for m = 1:num_words_per_line |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
213 data = words (m:num_words_per_line:end); |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
214 ## Map to format |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
215 ## FIXME - add support for formats like "%4s" or "<%s>", "%[a-zA-Z]" |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
216 ## Someone with regexp experience is needed. |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
217 switch fmt_words{m} |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
218 case "%s" |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
219 data (end+1:num_lines) = {""}; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
220 varargout {k} = data'; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
221 k++; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
222 case {"%d", "%f"} |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
223 n = cellfun (@isempty, data); |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
224 data = str2double (data); |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
225 data(n) = numeric_fill_value; |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
226 data (end+1:num_lines) = numeric_fill_value; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
227 varargout {k} = data.'; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
228 k++; |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
229 case {"%*", "%*s"} |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
230 ## skip the word |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
231 otherwise |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
232 ## Ensure descriptive content is consistent |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
233 if (numel (unique (data)) > 1 |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
234 || ! strcmpi (unique (data), fmt_words{m})) |
11472
1740012184f9
Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents:
11469
diff
changeset
|
235 error ("strread: FORMAT does not match data") |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
236 endif |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
237 endswitch |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
238 endfor |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
239 endfunction |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
240 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
241 function out = split_by (text, sep) |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
242 sep = union (sep, "\n"); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
243 pat = sprintf ("[^%s]+", sep); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
244 [~, ~, ~, out] = regexp (text, pat); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
245 out(cellfun (@isempty, out)) = {""}; |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
246 out = strtrim (out); |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
247 endfunction |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
248 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
249 %!test |
11343
5e5c513ea4c5
strread.m: Don't require space between format specifiers.
Ben Abbott <bpabbott@mac.com>
parents:
11150
diff
changeset
|
250 %! [a, b] = strread ("1 2", "%f%f"); |
5e5c513ea4c5
strread.m: Don't require space between format specifiers.
Ben Abbott <bpabbott@mac.com>
parents:
11150
diff
changeset
|
251 %! assert (a == 1 && b == 2); |
5e5c513ea4c5
strread.m: Don't require space between format specifiers.
Ben Abbott <bpabbott@mac.com>
parents:
11150
diff
changeset
|
252 |
5e5c513ea4c5
strread.m: Don't require space between format specifiers.
Ben Abbott <bpabbott@mac.com>
parents:
11150
diff
changeset
|
253 %!test |
9746
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
254 %! str = "# comment\n# comment\n1 2 3"; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
255 %! [a, b] = strread (str, '%d %s', 'commentstyle', 'shell'); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
256 %! assert (a, [1; 3]); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
257 %! assert (b, {"2"; ""}); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
258 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
259 %!test |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
260 %! str = ''; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
261 %! a = rand (10, 1); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
262 %! b = char (round (65 + 20 * rand (10, 1))); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
263 %! for k = 1:10 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
264 %! str = sprintf ('%s %.6f %s\n', str, a (k), b (k)); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
265 %! endfor |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
266 %! [aa, bb] = strread (str, '%f %s'); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
267 %! assert (a, aa, 1e-5); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
268 %! assert (cellstr (b), bb); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
269 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
270 %!test |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
271 %! str = ''; |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
272 %! a = rand (10, 1); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
273 %! b = char (round (65 + 20 * rand (10, 1))); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
274 %! for k = 1:10 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
275 %! str = sprintf ('%s %.6f %s\n', str, a (k), b (k)); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
276 %! endfor |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
277 %! aa = strread (str, '%f %*s'); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
278 %! assert (a, aa, 1e-5); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
279 |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
280 %!test |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
281 %! str = sprintf ('/* this is\nacomment*/ 1 2 3'); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
282 %! a = strread (str, '%f', 'commentstyle', 'c'); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
283 %! assert (a, [1; 2; 3]); |
31a22d48f41f
scripts/io/strread.m scripts/io/textread.m: new functions
Soren Hauberg <hauberg@gmail.com>
parents:
diff
changeset
|
284 |
11127
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
285 %!test |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
286 %! str = sprintf ("Tom 100 miles/hr\nDick 90 miles/hr\nHarry 80 miles/hr"); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
287 %! fmt = "%s %f miles/hr"; |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
288 %! c = cell (1, 2); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
289 %! [c{:}] = strread (str, fmt); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
290 %! assert (c{1}, {"Tom"; "Dick"; "Harry"}) |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
291 %! assert (c{2}, [100; 90; 80]) |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
292 |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
293 %!test |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
294 %! a = strread ("a b c, d e, , f", "%s", "delimiter", ","); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
295 %! assert (a, {"a b c"; "d e"; ""; "f"}); |
64728cd28d7a
strread.m: Improve compatibility with Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11120
diff
changeset
|
296 |