Mercurial > pytave
view @pyobject/display.m @ 408:f833e29b2c12
Simplify conversion where existing Python object argument expected (fixes issue #67)
* __py_struct_from_dict__.cc (F__py_isinstance__, F__py_struct_from_dict__):
Use pytave::pyobject_unwrap_object and simplify surrounding code.
* oct-py-types.cc (pytave::extract_py_scalar_map): Raise Octave errors instead
of throwing exceptions, reword error messages.
* @pyobject/pyobject.m: Add %!error tests for struct conversion failure.
author | Mike Miller <mtmiller@octave.org> |
---|---|
date | Tue, 02 May 2017 10:06:14 -0700 |
parents | b054a6833022 |
children | 750a86973625 |
line wrap: on
line source
## Copyright (C) 2016 Colin B. Macdonald ## ## This file is part of Pytave ## ## Pytave is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published ## by the Free Software Foundation; either version 3 of the License, ## or (at your option) any later version. ## ## This software is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See ## the GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public ## License along with this software; see the file COPYING. ## If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- ## @documentencoding UTF-8 ## @defmethod @@pyobject display (@var{x}) ## Custom display for pyobjects. ## ## Example: ## @example ## @group ## pyexec ("import sys") ## sysmodule = pyeval ("sys") ## @result{} sysmodule = [pyobject ...] ## ## <module 'sys' (built-in)> ## ## @end group ## @end example ## ## @seealso{@@pyobject/char, @@pyobject/disp} ## @end defmethod function display (x) try [~, spacing] = format (); loose = strcmp (spacing, "loose"); catch loose = ! __compactformat__ (); end_try_catch printf ("%s = [Python object of type %s]\n", inputname (1), __py_class_name__ (x)); s = char (x); s = make_indented (s); if (loose), printf ("\n"); endif disp (s) if (loose), printf ("\n"); endif endfunction function s = make_indented (s, n) if (nargin == 1) n = 2; endif pad = char (double (" ") * ones (1,n)); s = strrep (s, "\n", ["\n" pad]); s = [pad s]; # first line endfunction