58 lines
1.7 KiB
Julia
58 lines
1.7 KiB
Julia
# IF THIS SMALL FUNCTION IS PLACED IN THE STARTUP.JL
|
|
# FILE, IT WILL BE LOADED ON STARTUP. THE REST OF
|
|
# THIS EXAMPLE IS IN ALL UPPERCASE.
|
|
function RUNUPPERCASECODE(CO)
|
|
COD = replace(lowercase(CO), "date" => "Date")
|
|
for E in Meta.parse(COD, 1) eval(E) end
|
|
end
|
|
|
|
|
|
CODE = """BEGIN
|
|
|
|
USING DATES;
|
|
CENTEROBJECT(X, N) = BEGIN S = UPPERCASE(STRING(X)); RPAD(LPAD(S, DIV(N + LENGTH(S), 2)), N) END;
|
|
FUNCTION FORMATMONTH(YR, MO)
|
|
DT = DATE(\"\$YR-\$MO-01\");
|
|
DAYOFWEEKFIRST = DAYOFWEEK(DT);
|
|
NUMWEEKLINES = 1;
|
|
STR = UPPERCASE(CENTEROBJECT(MONTHNAME(DT), 20) * \"\\NMO TU WE TH FR SA SU\\N\");
|
|
STR *= \" \" ^ (3 * (DAYOFWEEKFIRST - 1)) * LPAD(STRING(1), 2);
|
|
FOR I = 2:DAYSINMONTH(DT)
|
|
IF (I + DAYOFWEEKFIRST + 5) % 7 == 0
|
|
STR *= \"\\N\" * LPAD(I, 2);
|
|
NUMWEEKLINES += 1;
|
|
ELSE
|
|
STR *= LPAD(STRING(I), 3);
|
|
END;
|
|
END;
|
|
STR *= NUMWEEKLINES < 6 ? \"\\N\\N\\N\" : \"\\N\\N\";
|
|
ARR = [];
|
|
FOR S IN SPLIT(STR, \"\\N\")
|
|
PUSH!(ARR, RPAD(S, 20)[1:20])
|
|
END;
|
|
JOIN(ARR, \"\\N\");
|
|
END;
|
|
|
|
FUNCTION FORMATYEAR(DISPLAYYEAR)
|
|
CALMONTHS = [FORMATMONTH(DISPLAYYEAR, MO) FOR MO IN 1:12];
|
|
MONTHSPERLINE = 6;
|
|
JOINSPACES = 2;
|
|
STR = \"\\N\" * CENTEROBJECT(DISPLAYYEAR, 132) * \"\\N\";
|
|
MONTHCAL = [SPLIT(FORMATMONTH(DISPLAYYEAR, I), \"\\N\") FOR I IN 1:12];
|
|
FOR I IN 1:MONTHSPERLINE:LENGTH(CALMONTHS) - 1
|
|
FOR J IN 1:LENGTH(MONTHCAL[1])
|
|
MONTHLINES = MAP(X->MONTHCAL[X][J], I:I + MONTHSPERLINE - 1);
|
|
STR *= RPAD(JOIN(MONTHLINES, \" \" ^ JOINSPACES), 132) * \"\\N\";
|
|
END;
|
|
STR *= \"\\N\";
|
|
END;
|
|
STR;
|
|
END;
|
|
|
|
PRINTLN(FORMATYEAR(1969));
|
|
|
|
END;
|
|
"""
|
|
|
|
RUNUPPERCASECODE(CODE)
|