* Bug #10816 fixed - Allow the usage of the '$' keyword in the part function.
[scilab.git] / scilab / modules / string / macros / %ip_part.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) - 2013 - Samuel GOUGEON
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 function r = %ip_part(txt, s)
11     // Allows calls such as: part(txt, $:-1:1)  // (== strrev() )
12     // Calls with unranging $ are not supported => define %p_part()
13     // txt may be a matrix of texts with different lengths
14     //  => $ might not have the same value for all of them
15
16     //check s
17     if ~checkip(s) then
18         msg = _("%s: Wrong value for input argument #%d: $ expected.\n", 2);
19         error(msprintf(msg,"part"))
20     end
21
22     L = length(txt)
23     U = unique(L)
24     r = emptystr(txt)
25     for u = U(:)'
26         j = 1:u
27         k = find(L==u)
28         r(k) = part(txt(k), j(s))
29     end
30 endfunction
31
32 function b = checkip(p)
33     b = checkvar(p(1)) & checkvar(p(2)) & checkvar(p(3));
34 endfunction
35
36 function b = checkvar(p)
37     b = %t;
38     if typeof(p) == "polynomial" & varn(p) ~= "$" then
39         b = %f;
40     end
41 endfunction