A simple package to view dates in monthly calendar format from the comfort of your REPL, built on top of PrettyTables.jl.
Currently, only the English language Gregorian calendar is supported.
This package is registered, thus it can be installed by running:
] add TerminalCalendar
There is only a single exported function calendar
. In its most basic form,
it takes zero arguments and prints the current month to the screen:
julia> calendar()
November 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β 1 β 2 β 3 β 4 β 5 β 6 β 7 β
β 8 β 9 β 10 β 11 β 12 β 13 β 14 β
β 15 β 16 β 17 β 18 β 19 β 20 β 21 β
β 22 β 23 β 24 β 25 β 26 β 27 β 28 β
β 29 β 30 β β β β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
or it can take two Int
values for year and month:
julia> calendar(2021, 12)
December 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β 1 β 2 β 3 β 4 β 5 β
β 6 β 7 β 8 β 9 β 10 β 11 β 12 β
β 13 β 14 β 15 β 16 β 17 β 18 β 19 β
β 20 β 21 β 22 β 23 β 24 β 25 β 26 β
β 27 β 28 β 29 β 30 β 31 β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
You can also input a Date
object (after importing Dates
):
julia> calendar(Date(2021, 12))
December 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β 1 β 2 β 3 β 4 β 5 β
β 6 β 7 β 8 β 9 β 10 β 11 β 12 β
β 13 β 14 β 15 β 16 β 17 β 18 β 19 β
β 20 β 21 β 22 β 23 β 24 β 25 β 26 β
β 27 β 28 β 29 β 30 β 31 β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
The text table formats provided by PrettyTables.jl are re-exported so you could pass those as optional arguments to jazz up the how the calendar looks:
julia> calendar(2021, 12; tf=tf_compact)
December 2021
----- ----- ----- ----- ----- ----- -----
Mon Tue Wed Thu Fri Sat Sun
----- ----- ----- ----- ----- ----- -----
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
----- ----- ----- ----- ----- ----- -----
Currently, only the text back-end formats are re-exported.
You can pass in ranges:
julia> calendar(2021, 10:12)
October 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β β β 1 β 2 β 3 β
β 4 β 5 β 6 β 7 β 8 β 9 β 10 β
β 11 β 12 β 13 β 14 β 15 β 16 β 17 β
β 18 β 19 β 20 β 21 β 22 β 23 β 24 β
β 25 β 26 β 27 β 28 β 29 β 30 β 31 β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
November 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β 1 β 2 β 3 β 4 β 5 β 6 β 7 β
β 8 β 9 β 10 β 11 β 12 β 13 β 14 β
β 15 β 16 β 17 β 18 β 19 β 20 β 21 β
β 22 β 23 β 24 β 25 β 26 β 27 β 28 β
β 29 β 30 β β β β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
December 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β 1 β 2 β 3 β 4 β 5 β
β 6 β 7 β 8 β 9 β 10 β 11 β 12 β
β 13 β 14 β 15 β 16 β 17 β 18 β 19 β
β 20 β 21 β 22 β 23 β 24 β 25 β 26 β
β 27 β 28 β 29 β 30 β 31 β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
You can also pass in vectors of dates:
julia> febs = lastdayofmonth.(Date(2010, 2):Year(1):Date(2020, 2));
julia> leap_febs = filter(x -> day(x) == 29, febs)
3-element Vector{Date}:
2012-02-29
2016-02-29
2020-02-29
julia> calendar(leap_febs)
February 2012
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β 1 β 2 β 3 β 4 β 5 β
β 6 β 7 β 8 β 9 β 10 β 11 β 12 β
β 13 β 14 β 15 β 16 β 17 β 18 β 19 β
β 20 β 21 β 22 β 23 β 24 β 25 β 26 β
β 27 β 28 β 29 β β β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
February 2016
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β 1 β 2 β 3 β 4 β 5 β 6 β 7 β
β 8 β 9 β 10 β 11 β 12 β 13 β 14 β
β 15 β 16 β 17 β 18 β 19 β 20 β 21 β
β 22 β 23 β 24 β 25 β 26 β 27 β 28 β
β 29 β β β β β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
February 2020
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β β β β 1 β 2 β
β 3 β 4 β 5 β 6 β 7 β 8 β 9 β
β 10 β 11 β 12 β 13 β 14 β 15 β 16 β
β 17 β 18 β 19 β 20 β 21 β 22 β 23 β
β 24 β 25 β 26 β 27 β 28 β 29 β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
You can get the calendar for a whole year simply by inputting a single Int
:
julia> calendar(2021)
January 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β β β 1 β 2 β 3 β
β 4 β 5 β 6 β 7 β 8 β 9 β 10 β
β 11 β 12 β 13 β 14 β 15 β 16 β 17 β
β 18 β 19 β 20 β 21 β 22 β 23 β 24 β
β 25 β 26 β 27 β 28 β 29 β 30 β 31 β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
February 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β 1 β 2 β 3 β 4 β 5 β 6 β 7 β
β 8 β 9 β 10 β 11 β 12 β 13 β 14 β
β 15 β 16 β 17 β 18 β 19 β 20 β 21 β
β 22 β 23 β 24 β 25 β 26 β 27 β 28 β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
March 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β 1 β 2 β 3 β 4 β 5 β 6 β 7 β
β 8 β 9 β 10 β 11 β 12 β 13 β 14 β
β 15 β 16 β 17 β 18 β 19 β 20 β 21 β
β 22 β 23 β 24 β 25 β 26 β 27 β 28 β
β 29 β 30 β 31 β β β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
April 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β β 1 β 2 β 3 β 4 β
β 5 β 6 β 7 β 8 β 9 β 10 β 11 β
β 12 β 13 β 14 β 15 β 16 β 17 β 18 β
β 19 β 20 β 21 β 22 β 23 β 24 β 25 β
β 26 β 27 β 28 β 29 β 30 β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
May 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β β β β 1 β 2 β
β 3 β 4 β 5 β 6 β 7 β 8 β 9 β
β 10 β 11 β 12 β 13 β 14 β 15 β 16 β
β 17 β 18 β 19 β 20 β 21 β 22 β 23 β
β 24 β 25 β 26 β 27 β 28 β 29 β 30 β
β 31 β β β β β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
June 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β 1 β 2 β 3 β 4 β 5 β 6 β
β 7 β 8 β 9 β 10 β 11 β 12 β 13 β
β 14 β 15 β 16 β 17 β 18 β 19 β 20 β
β 21 β 22 β 23 β 24 β 25 β 26 β 27 β
β 28 β 29 β 30 β β β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
July 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β β 1 β 2 β 3 β 4 β
β 5 β 6 β 7 β 8 β 9 β 10 β 11 β
β 12 β 13 β 14 β 15 β 16 β 17 β 18 β
β 19 β 20 β 21 β 22 β 23 β 24 β 25 β
β 26 β 27 β 28 β 29 β 30 β 31 β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
August 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β β β β β 1 β
β 2 β 3 β 4 β 5 β 6 β 7 β 8 β
β 9 β 10 β 11 β 12 β 13 β 14 β 15 β
β 16 β 17 β 18 β 19 β 20 β 21 β 22 β
β 23 β 24 β 25 β 26 β 27 β 28 β 29 β
β 30 β 31 β β β β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
September 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β 1 β 2 β 3 β 4 β 5 β
β 6 β 7 β 8 β 9 β 10 β 11 β 12 β
β 13 β 14 β 15 β 16 β 17 β 18 β 19 β
β 20 β 21 β 22 β 23 β 24 β 25 β 26 β
β 27 β 28 β 29 β 30 β β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
October 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β β β 1 β 2 β 3 β
β 4 β 5 β 6 β 7 β 8 β 9 β 10 β
β 11 β 12 β 13 β 14 β 15 β 16 β 17 β
β 18 β 19 β 20 β 21 β 22 β 23 β 24 β
β 25 β 26 β 27 β 28 β 29 β 30 β 31 β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
November 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β 1 β 2 β 3 β 4 β 5 β 6 β 7 β
β 8 β 9 β 10 β 11 β 12 β 13 β 14 β
β 15 β 16 β 17 β 18 β 19 β 20 β 21 β
β 22 β 23 β 24 β 25 β 26 β 27 β 28 β
β 29 β 30 β β β β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
December 2021
βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ
β Mon β Tue β Wed β Thu β Fri β Sat β Sun β
βββββββΌββββββΌββββββΌββββββΌββββββΌββββββΌββββββ€
β β β 1 β 2 β 3 β 4 β 5 β
β 6 β 7 β 8 β 9 β 10 β 11 β 12 β
β 13 β 14 β 15 β 16 β 17 β 18 β 19 β
β 20 β 21 β 22 β 23 β 24 β 25 β 26 β
β 27 β 28 β 29 β 30 β 31 β β β
βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
Currently, displaying an entire year on one screen is not implemented, though that is a planned feature.
And there is more, just play around with it and see what works!
Much thanks to Ronan Arraes Jardim Chagas for his help!
This package is mostly just fun and learning. If you have ideas for improvement, please open an issue, submit a PR, or contact me on Slack.
- date highlighting
- whole year calendar on one screen
- ability to save a calendar table as a string