loosen regex white space, add periods and <sup>s
parent
c3eae2a012
commit
bd8c08886b
|
@ -6,7 +6,7 @@ use DDG::Goodie;
|
||||||
# My imports
|
# My imports
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Lingua::EN::Numbers::Ordinate;
|
use Lingua::EN::Numbers::Ordinate qw/ordinate ordsuf/;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use Date::Calc qw(:all);
|
use Date::Calc qw(:all);
|
||||||
|
|
||||||
|
@ -43,38 +43,40 @@ my @months = qw/
|
||||||
/;
|
/;
|
||||||
|
|
||||||
handle query_raw => sub {
|
handle query_raw => sub {
|
||||||
return unless /
|
return unless /^\s*
|
||||||
what(?:'?s|\sis|\swas)\s
|
what(?:'?s|\sis|\swas)\s+
|
||||||
the\s
|
the\s+
|
||||||
(current|(\d{1,2})(?:nd|th|rd|st)?)\s
|
(current|(\d{1,2})(?:nd|th|rd|st)?)\s+
|
||||||
week
|
week
|
||||||
(
|
(
|
||||||
\sof\s
|
\s+of\s+
|
||||||
(?:(?:the|this)\s)?
|
(?:(?:the|this)\s+)?
|
||||||
(year|\d{4})
|
(year|\d{4})
|
||||||
)?\??
|
)?\??
|
||||||
/x;
|
\s*$/x;
|
||||||
|
|
||||||
my $week = $1;
|
my $week = $1;
|
||||||
my $year = defined $4 ? ($4 eq 'year' ? 'current' : $4) : 'current';
|
my $year = defined $4 ? ($4 eq 'year' ? 'current' : $4) : 'current';
|
||||||
|
|
||||||
return if $week =~ s/(nd|th|rd|st)$// and $week > 52;
|
return if $week =~ s/(nd|th|rd|st)$// and $week > 52;
|
||||||
|
|
||||||
my $dt = DateTime->now(time_zone => $loc->time_zone);
|
my $dt = DateTime->now(time_zone => $loc->time_zone)
|
||||||
|
if ($week eq 'current' or $year eq 'current');
|
||||||
|
|
||||||
if ($week eq 'current' and $year eq 'current') {
|
if ($week eq 'current' and $year eq 'current') {
|
||||||
return "We are in currently in the " . ordinate($dt->week_number) .
|
return "We are in currently in the " . ordinate($dt->week_number) .
|
||||||
" week of $dt->year";
|
' week of ' . $dt->year . '.',
|
||||||
|
html => 'We are in currently in the ' . $dt->week_number
|
||||||
|
. '<sup>' . ordsuf($dt->week_number) . '</sup>'
|
||||||
|
. ' week of ' . $dt->year . '.';
|
||||||
} elsif ($year eq 'current') {
|
} elsif ($year eq 'current') {
|
||||||
$year = $dt->year();
|
$year = $dt->year();
|
||||||
my (undef, $month, $day) = Monday_of_Week($week, $year);
|
|
||||||
return "The " . ordinate($week) . " week of $year began on " .
|
|
||||||
"$months[--$month] " . ordinate($day);
|
|
||||||
} else {
|
|
||||||
my (undef, $month, $day) = Monday_of_Week($week, $year);
|
|
||||||
return "The " . ordinate($week) . " week of $year began on " .
|
|
||||||
"$months[--$month] " . ordinate($day);
|
|
||||||
}
|
}
|
||||||
|
my (undef, $month, $day) = Monday_of_Week($week, $year);
|
||||||
|
return "The " . ordinate($week) . " week of $year began on " .
|
||||||
|
"$months[--$month] " . ordinate($day) . '.',
|
||||||
|
html =>"The $week<sup>" . ordsuf($week) . "</sup> week of $year began on " .
|
||||||
|
"$months[$month] $day<sup>" . ordsuf($day) . '</sup>.';
|
||||||
};
|
};
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
35
t/Week.t
35
t/Week.t
|
@ -15,26 +15,33 @@ ddg_goodie_test(
|
||||||
DDG::Goodie::Week
|
DDG::Goodie::Week
|
||||||
)],
|
)],
|
||||||
|
|
||||||
"what is the current week" =>
|
"what is the current week" => test_zci(
|
||||||
test_zci(qr/We are in currently in the \d+\w+ week of \d+/),
|
qr/We are in currently in the \d+\w+ week of \d+\./,
|
||||||
|
html => qr:We are in currently in the \d+<sup>\w+</sup> week of \d+\.:),
|
||||||
|
|
||||||
"what's the current week?" =>
|
"what's the current week? " => test_zci(
|
||||||
test_zci(qr/We are in currently in the \d+\w+ week of \d+/),
|
qr/We are in currently in the \d+\w+ week of \d+\./,
|
||||||
|
html => qr:We are in currently in the \d+<sup>\w+</sup> week of \d+\.:),
|
||||||
|
|
||||||
"whats the current week of the year" =>
|
"whats the current week of the year" => test_zci(
|
||||||
test_zci(qr/We are in currently in the \d+\w+ week of \d+/),
|
qr/We are in currently in the \d+\w+ week of \d+\./,
|
||||||
|
html => qr:We are in currently in the \d+<sup>\w+</sup> week of \d+\.:),
|
||||||
|
|
||||||
"what was the 5th week of this year" =>
|
"what was the 5th week of this year" => test_zci(
|
||||||
test_zci(qr/The \d+\w+ week of \d+ began on January \d+\w+/),
|
qr/The \d+\w+ week of \d+ began on January \d+\w+\./,
|
||||||
|
html => qr:The \d+<sup>\w+</sup> week of \d+ began on January \d+<sup>\w+</sup>\.:),
|
||||||
|
|
||||||
"what was the 43rd week of 1984" =>
|
"what was the 43rd week of 1984" => test_zci(
|
||||||
test_zci("The 43rd week of 1984 began on October 22nd"),
|
"The 43rd week of 1984 began on October 22nd.",
|
||||||
|
html => "The 43<sup>rd</sup> week of 1984 began on October 22<sup>nd</sup>."),
|
||||||
|
|
||||||
"what was the 8th week of 1956" =>
|
"what was the 8th week of 1956" => test_zci(
|
||||||
test_zci("The 8th week of 1956 began on February 20th"),
|
"The 8th week of 1956 began on February 20th.",
|
||||||
|
html => "The 8<sup>th</sup> week of 1956 began on February 20<sup>th</sup>."),
|
||||||
|
|
||||||
"what was the 21st week of 1987" =>
|
"what was the 21st week of 1987" => test_zci(
|
||||||
test_zci("The 21st week of 1987 began on May 18th"),
|
"The 21st week of 1987 began on May 18th.",
|
||||||
|
html => "The 21<sup>st</sup> week of 1987 began on May 18<sup>th</sup>."),
|
||||||
);
|
);
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
Loading…
Reference in New Issue