Markup::Calendar
Raku package with Markup (HTML, Markdown) calendar functions for displaying monthly, yearly, and custom calendars.
Motivation
The package
"Text::Calendar", [AAp1],
provides the core functions for making the calendars in this package.
The packages
"Data::Translators", [AAp2], and
"Pretty::Table", [ULp1],
provide additional formatting functionalities.
I want to keep "Text::Calendar" lightweight, without any dependencies. Hence I made this separate
package, "Markup::Calendar", that has more involved dependencies and use-cases.
An "involved use case" is calendar in which some of the days have tooltips and hyperlinks.
Installation
From Zef ecosystem:
zef install Markup::Calendar
From GitHub:
zef install https://github.com/antononcube/Raku-Markup-Calendar.git
Examples
Basic HTML calendar
use Markup::Calendar;
use Text::Calendar;
calendar():html
January 2024Mo | Tu | We | Th | Fr | Sa | Su |
---|
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 2024Mo | Tu | We | Th | Fr | Sa | Su |
---|
| | | 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 | | | |
| March 2024Mo | Tu | We | Th | Fr | Sa | Su |
---|
| | | | 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 |
|
HTML yearly calendar with highlights
Here is an HTML calendar that weekend days are highlighted and with larger font:
calendar-year(
per-row => 4,
highlight => (Date.new(2024,1,1)...Date.new(2024,12,31)).grep({ $_.day-of-week ≥ 6 }),
highlight-style => 'color:orange; font-size:14pt'
):html
2024
JanuaryMo | Tu | We | Th | Fr | Sa | Su |
---|
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 | | | | |
| FebruaryMo | Tu | We | Th | Fr | Sa | Su |
---|
| | | 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 | | | |
| MarchMo | Tu | We | Th | Fr | Sa | Su |
---|
| | | | 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 |
| AprilMo | Tu | We | Th | Fr | Sa | Su |
---|
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 | | | | | |
|
MayMo | Tu | We | Th | Fr | Sa | Su |
---|
| | 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 | | |
| JuneMo | Tu | We | Th | Fr | Sa | Su |
---|
| | | | | 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 |
| JulyMo | Tu | We | Th | Fr | Sa | Su |
---|
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 | | | | |
| AugustMo | Tu | We | Th | Fr | Sa | Su |
---|
| | | 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 | |
|
SeptemberMo | Tu | We | Th | Fr | Sa | Su |
---|
| | | | | | 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 | | | | | | |
| OctoberMo | Tu | We | Th | Fr | Sa | Su |
---|
| 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 | | | |
| NovemberMo | Tu | We | Th | Fr | Sa | Su |
---|
| | | | 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 | |
| DecemberMo | Tu | We | Th | Fr | Sa | Su |
---|
| | | | | | 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 | | | | | |
|
Standalone calendar file
Here we make a standalone calendar file:
spurt('example.html', calendar-year(year => 2024, highlight => [3=>3, 5=>24, 9=>9], highlight-style=>'color:red', format=>'html'))
# True
TODO
- TODO Features
- DONE HTML
- DONE Full HTML calendar
- DONE Partial HTML calendar (e.g. equivalent of
cal -3
) - DONE Highlighted days
- DONE Tooltips for days
- DONE Hyperlinks for days
- TODO Markdown
- TODO Full Markdown calendar
- TODO Partial Markdown calendar
- TODO Highlighted days
- TODO Tooltips for days
- TODO Hyperlinks for days
- Unit tests
- DONE Basic usage
- DONE Equivalence using different signatures
- TODO Correctness
- Documentation
- DONE Basic README
- TODO Diagrams
- TODO Comparisons
References
[AAp1] Anton Antonov,
Text::Calendar Raku package,
(2024),
GitHub/antononcube.
[AAp2] Anton Antonov,
Data::Translators Raku package,
(2023),
GitHub/antononcube.
[LUp1] Luis F. Uceta,
Pretty::Table Raku package,
(2020),
GitLab/uzluisf.