* Bug 13303 fixed: mprintf msprintf mfprintf now accept input booleans
[scilab.git] / scilab / modules / output_stream / macros / %printf_boolean.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2020 - Samuel GOUGEON - Le Mans Universit√©
3 //
4 // This file is hereby licensed under the terms of the GNU GPL v2.0,
5 // pursuant to article 5.3.4 of the CeCILL v.2.1.
6 // This file was originally licensed under the terms of the CeCILL v2.1,
7 // and continues to be available under such terms.
8 // For more information, see the COPYING file which you should have received
9 // along with this program.
10 //
11
12 function r = %printf_boolean(Format, varargin)
13     r = varargin
14     Format = strsubst(Format, "%%", "")
15     [s, e, Fields] = regexp(Format, "/%.*?[diuoxXfeEgGcs]/")
16     if grep(Fields, "$") <> [] then
17         // numbered formats: reordering fields in order to know
18         // the expected output format for each input argument.
19         for f = Fields'
20             [s,e,m,n] = regexp(f, "/%([0-9])\$/")
21             tmp(evstr(n)) = f
22         end
23         Fields = tmp
24     end
25     for i = 1:length(varargin)
26         if type(r(i)) == 4   // boolean
27             if or(part(Fields(i),$)==["s" "c"])
28                 r(i) = string(r(i))
29             else
30                 r(i) = bool2s(r(i))
31             end
32         end
33     end
34 endfunction