Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
52
Task/Calendar/Sidef/calendar.sidef
Normal file
52
Task/Calendar/Sidef/calendar.sidef
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
require('DateTime')
|
||||
|
||||
define months_per_col = 3
|
||||
define week_day_names = <Mo Tu We Th Fr Sa Su>
|
||||
define month_names = <Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec>
|
||||
|
||||
func fmt_month (year, month) {
|
||||
var str = sprintf("%-20s\n", month_names[month-1])
|
||||
str += week_day_names.join(' ')+"\n"
|
||||
|
||||
var dt = %s'DateTime'
|
||||
var date = dt.new(year => year, month => month)
|
||||
var week_day = date.day_of_week
|
||||
str += ([" "] * week_day-1 -> join(" "))
|
||||
|
||||
var last_day = dt.last_day_of_month(year => year, month => month).day
|
||||
for day in range(date.day, last_day) {
|
||||
date = dt.new(year => year, month => month, day => day)
|
||||
|
||||
str += " " if (week_day ~~ range(2,7))
|
||||
if (week_day == 8) {
|
||||
str += "\n"
|
||||
week_day = 1
|
||||
}
|
||||
str += sprintf("%2d", day)
|
||||
++week_day
|
||||
}
|
||||
str += " " if (week_day < 8)
|
||||
str += ([" "] * 8-week_day -> join(" "))
|
||||
str += "\n"
|
||||
}
|
||||
|
||||
func fmt_year (year) {
|
||||
var month_strs = 12.of { |i| fmt_month(year, i).lines }
|
||||
|
||||
var str = (' '*30 + year + "\n")
|
||||
for month in range(0, 11, months_per_col) {
|
||||
while (month_strs[month]) {
|
||||
months_per_col.times { |i|
|
||||
month_strs[month + i - 1] || next
|
||||
str += month_strs[month + i - 1].shift
|
||||
str += ' '*3
|
||||
}
|
||||
str += "\n"
|
||||
}
|
||||
str += "\n"
|
||||
}
|
||||
|
||||
return str
|
||||
}
|
||||
|
||||
print fmt_year(ARGV.is_empty ? 1969 : ARGV[0].to_i)
|
||||
Loading…
Add table
Add a link
Reference in a new issue