[ast] improve display of (complex) polymomials and rationals
[scilab.git] / scilab / modules / overloading / macros / %r_string.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2016 - Samuel GOUGEON
3 // Copyright (C) 2019 - St├ęphane MOTTELET
4 //
5 // Copyright (C) 2012 - 2016 - Scilab Enterprises
6 //
7 // This file is hereby licensed under the terms of the GNU GPL v2.0,
8 // pursuant to article 5.3.4 of the CeCILL v.2.1.
9 // This file was originally licensed under the terms of the CeCILL v2.1,
10 // and continues to be available under such terms.
11 // For more information, see the COPYING file which you should have received
12 // along with this program.
13
14
15 function txt = %r_string(r)
16     // string output of any array of rationals, of any number of dimensions (even>2)
17     //
18     N = string(r.num(:))
19     D = string(r.den(:))
20     nr = size(r,"*")
21     i = 1:nr
22     lengthI = max([length(N(i)) length(D(i))],"c")
23     hruleMax = part(ascii([226 148 128]),ones(1:max(lengthI)))
24     hrules = strncpy(emptystr(nr,1)+hruleMax,lengthI)
25     txt = emptystr(nr*3,1);
26     j = 1:3:3*nr
27     txt(j)   = N(i)    // numerator
28     txt(j+1) = hrules  // ----------
29     txt(j+2) = D(i)    // denominator
30
31     // We reshape and justify the result
32     s = size(r)
33     s(1) = -1
34     txt = justify(matrix(txt,s),"c")
35 endfunction