[time] calendar() uses argn(1)==0 instead of 'display'
[scilab.git] / scilab / modules / time / macros / calendar.sci
1 //------------------------------------------------------------------------
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) INRIA - Allan CORNET
4 // Copyright (C) 2012 - 2016 - Scilab Enterprises
5 // Copyright (C) 2019 - Samuel GOUGEON
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 varargout = calendar(varargin)
16
17     c = [0,0,0];
18
19     select argn(2)
20     case 0
21         ct = getdate();
22         c = [ct(1),ct(2),1]
23         break
24     case 2
25         Y = varargin(1);
26         M = varargin(2);
27         msg = gettext("%s: Argument #%d: Scalar (1 element) expected.\n");
28         if length(Y)>1
29             error(msprintf(msg,"calendar", 1));
30         end
31         if length(M)>1
32             error(msprintf(msg,"calendar", 2));
33         end
34         if (M < 1) | (M > 12) then
35             msg = gettext("%s: Argument #%d: Must be in the interval [%d, %d].\n")
36             error(msprintf(msg, "calendar", 2, 1, 12));
37         end
38         c = [Y, M, 1];
39         break
40     else
41         msg = gettext("%s: Wrong number of input arguments: %d or %d expected.\n")
42         error(msprintf(msg, "calendar", 0, 2));
43     end
44
45
46     months = [gettext("Jan"); ..
47     gettext("Feb"); ..
48     gettext("Mar"); ..
49     gettext("Apr"); ..
50     gettext("May"); ..
51     gettext("Jun"); ..
52     gettext("Jul"); ..
53     gettext("Aug"); ..
54     gettext("Sep"); ..
55     gettext("Oct"); ..
56     gettext("Nov"); ..
57     gettext("Dec")];
58
59     month = months(c(:,2), :);
60     cal = Calendar(c(1), c(2));
61     dayNames = gettext("Mon  Tue  Wed  Thu  Fri  Sat  Sun")
62     //!\\ Glyphs for ja, zh, .. are not monospaced, even in the Monospaced font
63     // .po translations have been tuned and tested for alignments with Monospaced 12.
64     Title = sprintf("%s %d", month, c(1))
65     if ~argn(1) then
66         k = vectorfind(cal, zeros(1,7), "r")
67         cal(k,:) = []
68         t = matrix(msprintf("%d\n",cal(:)), -1, 7)
69         t(t=="0") = ""
70         t = strcat(justify(t, "r"), "   ", "c");
71         Title = blanks((length(t(2))-length(Title))/2) + Title
72         t = strsubst(["" ; Title ; dayNames ; t], " ", ascii(160))  // non-breakable spaces
73         mprintf(" %s\n", t)
74     else
75         varargout = list(list(Title, dayNames, cal));
76     end
77 endfunction