view @pyobject/display.m @ 216:3b2b7db7d709

Improve display * @pyobject/display.m: custom display method * @pyobject.m: disp method can return string * @pyobject/dummy.m: update doctests
author Colin Macdonald <cbm@m.fsf.org>
date Fri, 27 May 2016 14:13:34 -0700
parents
children 7feece80fbfa
line wrap: on
line source

%% Copyright (C) 2016 Colin B. Macdonald
%%
%% This file is part of PyTave.
%%
%% OctSymPy 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/disp}
%% @end defmethod


function display (x)

  loose = eval('! __compactformat__ ()');

  printf ('%s = [pyobject %s]\n', inputname (1), getid (x));
  s = disp (x);
  s = make_indented (s);
  if (loose), printf('\n'); end
  disp(s)
  if (loose), printf('\n'); end

end


function s = make_indented(s, n)
  if (nargin == 1)
    n = 2;
  end
  pad = char (double (' ')*ones (1,n));
  newl = sprintf('\n');
  s = strrep (s, newl, [newl pad]);
  s = [pad s];  % first line
end