annotate @pyobject/cell.m @ 302:de98627cf8ae

Minor fixes for failing doctests * @pyobject/cell.m: Fix doctest failure. * @pyobject/methods.m: More robust doctest.
author Colin Macdonald <cbm@m.fsf.org>
date Wed, 03 Aug 2016 21:11:14 -0700
parents df1bddece9d5
children 3afd890fff6d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
293
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
1 ## Copyright (C) 2016 Colin B. Macdonald
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
2 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
3 ## This file is part of Pytave
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
4 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
5 ## Pytave is free software; you can redistribute it and/or modify
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
6 ## it under the terms of the GNU General Public License as published
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
7 ## by the Free Software Foundation; either version 3 of the License,
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
8 ## or (at your option) any later version.
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
9 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
10 ## This software is distributed in the hope that it will be useful,
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
11 ## but WITHOUT ANY WARRANTY; without even the implied warranty
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
12 ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
13 ## the GNU General Public License for more details.
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
14 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
16 ## License along with this software; see the file COPYING.
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
17 ## If not, see <http://www.gnu.org/licenses/>.
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
18
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
19 ## -*- texinfo -*-
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
20 ## @documentencoding UTF-8
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
21 ## @defmethod @@pyobject cell (@var{x})
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
22 ## Convert an iterable Python object to a cell array.
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
23 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
24 ## For example, by default Python lists are not automatically
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
25 ## converted into native Octave objects:
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
26 ## @example
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
27 ## @group
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
28 ## L = pyeval ("[10, 20, 'hello']")
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
29 ## @result{} L = [pyobject ...]
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
30 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
31 ## [10, 20, 'hello']
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
32 ## @end group
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
33 ## @end example
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
34 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
35 ## However, we can convert the list to a cell array:
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
36 ## @example
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
37 ## @group
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
38 ## C = cell (L)
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
39 ## @result{} C =
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
40 ## @{
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
41 ## [1,1] = 10
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
42 ## [1,2] = 20
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
43 ## [1,3] = hello
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
44 ## @}
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
45 ## @end group
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
46 ## @end example
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
47 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
48 ## The conversion is not recursive, in the following sense:
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
49 ## @example
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
50 ## @group
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
51 ## L = pyeval ("[10, 20, [33, 44], 50]");
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
52 ## C = cell (L)
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
53 ## @result{} C =
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
54 ## @{
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
55 ## [1,1] = 10
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
56 ## [1,2] = 20
302
de98627cf8ae Minor fixes for failing doctests
Colin Macdonald <cbm@m.fsf.org>
parents: 298
diff changeset
57 ## = [pyobject ...]
293
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
58 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
59 ## [33, 44]
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
60 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
61 ## [1,4] = 50
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
62 ## @}
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
63 ## @end group
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
64 ## @end example
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
65 ##
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
66 ## @seealso{cell2mat}
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
67 ## @end defmethod
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
68
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
69
298
df1bddece9d5 Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents: 293
diff changeset
70 function c = cell (x)
df1bddece9d5 Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents: 293
diff changeset
71 ## FIXME: subsref should take care of this case
df1bddece9d5 Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents: 293
diff changeset
72 if (length (x) == 0)
df1bddece9d5 Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents: 293
diff changeset
73 c = cell (0, 1);
df1bddece9d5 Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents: 293
diff changeset
74 return
df1bddece9d5 Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents: 293
diff changeset
75 endif
df1bddece9d5 Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents: 293
diff changeset
76 c = subsref (x, struct ("type", "{}", "subs", {{":"}}));
293
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
77 endfunction
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
78
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
79
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
80 %!test
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
81 %! L = pyeval ("(1, 2, 3)");
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
82 %! C = cell (L);
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
83 %! assert (iscell (C))
3f74eeb0a5da pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff changeset
84 %! assert (C, {1, 2, 3})