localization (compatibility_functions module)
[scilab.git] / scilab / modules / compatibility_functions / macros / char.sci
1 function y=char(varargin)
2 // Copyright INRIA
3 // Case : One input argument
4 // Input : a cell of characters arrays 
5 // Output : vector (column) of strings, 
6 // This function returns a vector in  which the rows are the components of the cell characters arrays
7 //
8 // Input : an array of ascii codes
9 // Output :a characters array corresponding into ascii codes
10 // If dims input =[n1,n2,n3,n4,....],then returned a value has the dims=[n1,n3,n4,...],
11 // returned value have same size as input value instead of second dims !
12 //
13 // Case : more than one input argument : y=char(st1,st2,st3,....)
14 // Inputs must be string : st1,st2,st3,...
15 // Outputs : vector (column) of strings
16 // This function returns a vector in  which the rows are st1, st2,st3,...,
17 // the length of all strings sti is completed by blanks,in order to have the same length for each sti.
18 // F.B
19
20   rhs=argn(2)
21   y=[]
22   //One input argument
23   if rhs==1 then
24     if typeof(varargin(1))=="ce" then //input argument is a cell of characters arrays
25       c=varargin(1)
26       lst=c.entries
27       if size(c)==1 then //cell contains one element
28         if typeof(lst)=="hypermat" then // cell elements are characters arrays
29           if type(lst.entries)==10 then
30             t=emptystr(size(lst,1),1)
31             lst=matrix(lst,[size(lst,1),size(lst,"*")/size(lst,1)])
32             for j=1:size(lst,2)
33               t=t+lst(:,j)
34             end
35             y=[y;t]
36           else
37             error(gettext("errors","compatibility_functions_error_3"));
38           end
39         elseif  type(lst)==10 then //cell elements are a string matrix
40           t=emptystr(size(lst,1),1)
41           for k=1:size(lst,2)
42             t=t+lst(:,k)
43           end
44           y=[y,t]
45         else // cell contains more than one element
46           error(gettext("errors","compatibility_functions_error_4"));
47         end
48       else
49         for i=1:size(lst)
50           if typeof(lst(i))=="hypermat" then
51             if type(lst(i).entries)==10 then              
52               ctemp=lst(i)
53               t=emptystr(size(ctemp,1),1)
54               ctemp=matrix(ctemp,[size(ctemp,1),size(ctemp,"*")/size(ctemp,1)])
55               for j=1:size(ctemp,2)
56                 t=t+ctemp(:,j)
57               end
58               y=[y;t]
59             else
60               error(gettext("errors","compatibility_functions_error_4"));
61             end
62           elseif type(lst(i))==10 then
63             t=emptystr(size(lst(i),1),1)
64             for k=1:size(lst(i),2)
65               t=t+lst(i)(:,k)
66             end 
67             y=[y;t]
68           else
69             error(gettext("errors","compatibility_functions_error_4"));
70           end
71         end
72       end    
73       // Add blank at the length of strings
74       bl=' '
75       maxstr=max(length(y))
76       for i=1:size(y,"*")
77         nb_bl=maxstr-length(y(i))
78         if nb_bl>0 then
79           y(i)=y(i)+part(bl,ones(1,nb_bl))
80         end
81       end
82     elseif type(varargin(1))==1|type(varargin(1))==8 then //Input is a matrix of integers (or reals) 
83       y=asciimat(varargin(1))
84     elseif type(varargin(1))==10 then //Input is a matrix of strings
85       for i=1:size(varargin(1),1)
86         y(i)=strcat(varargin(1)(i,:))
87       end
88     elseif typeof(varargin(1))=="hypermat" then //Input is a hypermatrix of strings
89       if type(varargin(1).entries)==10 then
90         y=varargin(1)
91       elseif type(varargin(1).entries)==1|type(varargin(1).entries)==8 then ////Input is a hypermatrix of integers (or reals) 
92         y=asciimat(varargin(1))
93       else
94         error(gettext("errors","compatibility_functions_error_5"));
95       end
96     else 
97       error(gettext("errors","compatibility_functions_error_6"));
98     end 
99     //More than one input argument
100   elseif rhs>1 then
101     for i=1:size(varargin)
102       if typeof(varargin(i))=="hypermat" then //Input sti is a hypermatrix of strings
103         lst=varargin(i)
104         if type(lst.entries)==10 then
105           t=emptystr(size(lst,1),1)
106           lst=matrix(lst,[size(lst,1),size(lst,"*")/size(lst,1)])
107           for j=1:size(lst,2)
108             t=t+lst(:,j)
109           end
110           y=[y;t]
111         else
112           error(gettext("errors","compatibility_functions_error_7"));
113         end
114       elseif  type(varargin(i))==10 then //Input sti is a matrix of strings
115         lst=varargin(i)
116         t=emptystr(size(lst,1),1)
117         for k=1:size(lst,2)
118           t=t+lst(:,k)
119         end
120         y=[y;t]
121       else 
122         error(gettext("errors","compatibility_functions_error_7"));
123       end
124     end
125     //Add blanks at the length of strings
126     bl=' '
127     maxstr=max(length(y))
128     for i=1:size(y,"*")
129       nb_bl=maxstr-length(y(i))
130       if nb_bl>0 then
131         y(i)=y(i)+part(bl,ones(1,nb_bl))
132       end
133     end
134   end
135
136 endfunction