* Bug #10816 fixed - Allow the usage of the '$' keyword in the part function.
[scilab.git] / scilab / modules / string / macros / %p_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 = %p_part(txt, s)
11     // Allows calls such as: part(txt, [ 2 $ 3:4 $-1])
12     //  with un-ranging implicit size $ standing for length(txt)
13     // Calls with ranging $ (ex: 3:$ ) are implemented with %ip_part()
14     //
15     // txt may be a matrix of texts with different lengths
16     //  => $ might have not the same value for all elements of txt.
17     if varn(s)~="$" then
18         msg = _("%s: $ is the only implicit variable supported in selected indices")
19         error(msprintf(msg,"part"))
20     end
21     L = length(txt)
22     U = unique(L)
23     r = emptystr(txt)
24     for u = U(:)'
25         j = 1:u
26         k = find(L==u)
27         r(k) = part(txt(k), horner(s(:)',u))
28     end
29 endfunction