Calendar-Dates-FRM
view release on metacpan or search on metacpan
lib/Calendar/Dates/FRM.pm view on Meta::CPAN
package Calendar::Dates::FRM;
our $DATE = '2020-01-03'; # DATE
our $VERSION = '0.008'; # VERSION
use 5.010001;
use strict;
use warnings;
use Role::Tiny::With;
with 'Calendar::DatesRoles::DataPreparer::CalendarVar::FromDATA::Simple';
with 'Calendar::DatesRoles::DataUser::CalendarVar';
sub filter_entry {
my ($self, $entry, $params) = @_;
if (defined(my $mon = $params->{exam_month})) {
$mon eq 'may' || $mon eq 'nov' or die "Invalid exam_month, please specify either may/nov";
return 0 unless grep { /\A$mon/ } @{ $entry->{tags} // [] };
}
# exam_level has no effect currently, each exam date is relevant to both
# levels/parts.
1;
}
1;
# ABSTRACT: FRM exam calendar
=pod
=encoding UTF-8
=head1 NAME
Calendar::Dates::FRM - FRM exam calendar
=head1 VERSION
This document describes version 0.008 of Calendar::Dates::FRM (from Perl distribution Calendar-Dates-FRM), released on 2020-01-03.
=head1 SYNOPSIS
=head2 Using from Perl
use Calendar::Dates::FRM;
my $min_year = Calendar::Dates::FRM->get_min_year; # => 2018
my $max_year = Calendar::Dates::FRM->get_max_year; # => 2020
my $entries = Calendar::Dates::FRM->get_entries(2020);
C<$entries> result:
[
{
date => "2020-01-02",
day => 2,
month => 1,
summary => "Exam results sent via email",
tags => ["nov2019exam"],
year => 2020,
},
{
date => "2020-01-31",
day => 31,
month => 1,
summary => "Early registration closed",
tags => ["may2020exam"],
year => 2020,
},
{
date => "2020-02-01",
day => 1,
month => 2,
summary => "Standard registration opened",
tags => ["may2020exam"],
year => 2020,
},
{
date => "2020-02-29",
day => 29,
month => 2,
summary => "Standard registration closed",
tags => ["may2020exam"],
year => 2020,
},
{
date => "2020-03-01",
day => 1,
month => 3,
summary => "Late registration opened",
tags => ["may2020exam"],
year => 2020,
},
{
date => "2020-04-15",
day => 15,
lib/Calendar/Dates/FRM.pm view on Meta::CPAN
year => 2020,
},
{
date => "2020-08-01",
day => 1,
month => 8,
summary => "Standard registration opened",
tags => ["nov2020exam"],
year => 2020,
},
{
date => "2020-08-31",
day => 31,
month => 8,
summary => "Standard registration closed",
tags => ["nov2020exam"],
year => 2020,
},
{
date => "2020-09-01",
day => 1,
month => 9,
summary => "Late registration opened",
tags => ["nov2020exam"],
year => 2020,
},
{
date => "2020-10-15",
day => 15,
month => 10,
summary => "Late registration closed",
tags => ["nov2020exam"],
year => 2020,
},
{
date => "2020-10-15",
day => 15,
month => 10,
summary => "Defer deadline",
tags => ["nov2020exam"],
year => 2020,
},
{
date => "2020-11-01",
day => 1,
month => 11,
summary => "Admission tickets released",
tags => ["nov2020exam"],
year => 2020,
},
{
date => "2020-11-21",
day => 21,
month => 11,
summary => "Exam day",
tags => ["nov2020exam"],
year => 2020,
},
]
=head2 Using from CLI (requires L<list-calendar-dates> and L<calx>)
% list-calendar-dates -l -m FRM
% calx -c FRM
=head1 DESCRIPTION
This module provides FRM exam calendar using the L<Calendar::Dates> interface.
=head1 DATES STATISTICS
+---------------+-------+
| key | value |
+---------------+-------+
| Earliest year | 2018 |
| Latest year | 2020 |
+---------------+-------+
=head1 DATES SAMPLES
Entries for year 2019:
+------------+-----+-------+------------------------------+-------------+------+
| date | day | month | summary | tags | year |
+------------+-----+-------+------------------------------+-------------+------+
| 2019-01-03 | 3 | 1 | Exam results sent via email | nov2018exam | 2019 |
| 2019-01-31 | 31 | 1 | Early registration closed | may2019exam | 2019 |
| 2019-02-01 | 1 | 2 | Standard registration opened | may2019exam | 2019 |
| 2019-02-28 | 28 | 2 | Standard registration closed | may2019exam | 2019 |
| 2019-03-01 | 1 | 3 | Late registration opened | may2019exam | 2019 |
| 2019-04-15 | 15 | 4 | Late registration closed | may2019exam | 2019 |
| 2019-04-15 | 15 | 4 | Defer deadline | may2019exam | 2019 |
| 2019-05-01 | 1 | 5 | Admission tickets released | may2019exam | 2019 |
| 2019-05-18 | 18 | 5 | Exam day | may2019exam | 2019 |
| 2019-06-28 | 28 | 6 | Exam results sent via email | may2019exam | 2019 |
| 2019-05-01 | 1 | 5 | Early registration opened | nov2019exam | 2019 |
| 2019-07-31 | 31 | 7 | Early registration closed | nov2019exam | 2019 |
| 2019-08-01 | 1 | 8 | Standard registration opened | nov2019exam | 2019 |
| 2019-08-31 | 31 | 8 | Standard registration closed | nov2019exam | 2019 |
| 2019-09-01 | 1 | 9 | Late registration opened | nov2019exam | 2019 |
| 2019-10-15 | 15 | 10 | Late registration closed | nov2019exam | 2019 |
| 2019-10-15 | 15 | 10 | Defer deadline | nov2019exam | 2019 |
| 2019-11-01 | 1 | 11 | Admission tickets released | nov2019exam | 2019 |
| 2019-11-16 | 16 | 11 | Exam day | nov2019exam | 2019 |
| 2019-12-01 | 1 | 12 | Early registration opened | may2020exam | 2019 |
+------------+-----+-------+------------------------------+-------------+------+
Entries for year 2020:
+------------+-----+-------+------------------------------+-------------+------+
| date | day | month | summary | tags | year |
+------------+-----+-------+------------------------------+-------------+------+
| 2020-01-02 | 2 | 1 | Exam results sent via email | nov2019exam | 2020 |
| 2020-01-31 | 31 | 1 | Early registration closed | may2020exam | 2020 |
| 2020-02-01 | 1 | 2 | Standard registration opened | may2020exam | 2020 |
| 2020-02-29 | 29 | 2 | Standard registration closed | may2020exam | 2020 |
| 2020-03-01 | 1 | 3 | Late registration opened | may2020exam | 2020 |
| 2020-04-15 | 15 | 4 | Late registration closed | may2020exam | 2020 |
| 2020-04-15 | 15 | 4 | Defer deadline | may2020exam | 2020 |
| 2020-05-01 | 1 | 5 | Admission tickets released | may2020exam | 2020 |
| 2020-05-16 | 16 | 5 | Exam day | may2020exam | 2020 |
| 2020-07-01 | 1 | 7 | Exam results sent via email | may2020exam | 2020 |
| 2020-05-01 | 1 | 5 | Early registration opened | nov2020exam | 2020 |
| 2020-07-31 | 31 | 7 | Early registration closed | nov2020exam | 2020 |
| 2020-08-01 | 1 | 8 | Standard registration opened | nov2020exam | 2020 |
| 2020-08-31 | 31 | 8 | Standard registration closed | nov2020exam | 2020 |
| 2020-09-01 | 1 | 9 | Late registration opened | nov2020exam | 2020 |
| 2020-10-15 | 15 | 10 | Late registration closed | nov2020exam | 2020 |
| 2020-10-15 | 15 | 10 | Defer deadline | nov2020exam | 2020 |
| 2020-11-01 | 1 | 11 | Admission tickets released | nov2020exam | 2020 |
| 2020-11-21 | 21 | 11 | Exam day | nov2020exam | 2020 |
+------------+-----+-------+------------------------------+-------------+------+
=for Pod::Coverage ^(filter_entry)$
=head1 PARAMETERS
=head2 exam_month
Can be used to select dates related to a certain exam month only. Value is
either C<may> or C<nov>. Example:
$entries = Calendar::Dates::FRM->get_entries({exam_month=>'nov'}, 2019);
=head2 exam_level
Can be used to select dates related to a certain exam level (part) only. Value
is either 1, 2.
$entries = Calendar::Dates::FRM->get_entries({exam_level=>2}, 2019);
=head1 HOMEPAGE
Please visit the project's homepage at L<https://metacpan.org/release/Calendar-Dates-FRM>.
=head1 SOURCE
Source repository is at L<https://github.com/perlancar/perl-Calendar-Dates-FRM>.
=head1 BUGS
Please report any bugs or feature requests on the bugtracker website L<https://rt.cpan.org/Public/Dist/Display.html?Name=Calendar-Dates-FRM>
When submitting a bug or request, please include a test-file or a
patch to an existing test-file that illustrates the bug or desired
feature.
=head1 SEE ALSO
L<https://www.garp.org/#!/frm/program-exams>
L<https://en.wikipedia.org/wiki/Financial_risk_management>
L<Calendar::Dates>
L<App::CalendarDatesUtils> contains CLIs to list dates from this module, etc.
L<calx> from L<App::calx> can display calendar and highlight dates from Calendar::Dates::* modules
=head1 AUTHOR
perlancar <perlancar@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2020, 2019 by perlancar@cpan.org.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
__DATA__
# nov2018exam
2019-01-03;Exam results sent via email;nov2018exam
# may2019exam
2018-12-01;Early registration opened;may2019exam
2019-01-31;Early registration closed;may2019exam
2019-02-01;Standard registration opened;may2019exam
2019-02-28;Standard registration closed;may2019exam
2019-03-01;Late registration opened;may2019exam
2019-04-15;Late registration closed;may2019exam
2019-04-15;Defer deadline;may2019exam
2019-05-01;Admission tickets released;may2019exam
2019-05-18;Exam day;may2019exam
2019-06-28;Exam results sent via email;may2019exam
# nov2019exam
2019-05-01;Early registration opened;nov2019exam
2019-07-31;Early registration closed;nov2019exam
2019-08-01;Standard registration opened;nov2019exam
2019-08-31;Standard registration closed;nov2019exam
2019-09-01;Late registration opened;nov2019exam
2019-10-15;Late registration closed;nov2019exam
2019-10-15;Defer deadline;nov2019exam
2019-11-01;Admission tickets released;nov2019exam
2019-11-16;Exam day;nov2019exam
2020-01-02;Exam results sent via email;nov2019exam
# may2020exam
2019-12-01;Early registration opened;may2020exam
2020-01-31;Early registration closed;may2020exam
2020-02-01;Standard registration opened;may2020exam
2020-02-29;Standard registration closed;may2020exam
2020-03-01;Late registration opened;may2020exam
2020-04-15;Late registration closed;may2020exam
2020-04-15;Defer deadline;may2020exam
2020-05-01;Admission tickets released;may2020exam
2020-05-16;Exam day;may2020exam
2020-07-01;Exam results sent via email;may2020exam
# nov2020exam
2020-05-01;Early registration opened;nov2020exam
2020-07-31;Early registration closed;nov2020exam
2020-08-01;Standard registration opened;nov2020exam
2020-08-31;Standard registration closed;nov2020exam
2020-09-01;Late registration opened;nov2020exam
( run in 0.878 second using v1.01-cache-2.11-cpan-85f18b9d64f )