HTML formatting

master
W25 2014-12-04 05:40:05 +00:00
parent d299c52b32
commit d2b57a73b4
3 changed files with 60 additions and 42 deletions

View File

@ -87,24 +87,32 @@ sub parse_other_date_formats {
# Handle statement
handle remainder => sub {
# Search by name first
my $text;
if (exists $dates{lc($_)}) {
return $dates{lc($_)};
# Search by name first
$text = $dates{lc($_)};
} else {
# Then, search by date
my $day = parse_datestring_to_date($_);
if (!$day) {
$day = parse_other_date_formats($_);
}
return unless $day;
# Any leap year here, because the array includes February, 29
$day->set_year(2000);
$text = $names[$day->day_of_year() - 1];
}
# Then, search by date
my $day = parse_datestring_to_date($_);
# Convert to HTML
my $html = $text;
$html =~ s/(^|; )(.*?:)/$1<b>$2<\/b>/g;
if (!$day) {
$day = parse_other_date_formats($_);
}
return unless $day;
# Any leap year here, because the array includes February, 29
$day->set_year(2000);
return $names[$day->day_of_year() - 1];
return $text, html => $html;
};
1;

View File

@ -39,6 +39,7 @@ sub load_days_file {
# Remove the names after vertical bar (|)
chomp;
s/\s*\|.*$//;
if ($_) {
$names[$day_of_year - 1] .= "; " if ($names[$day_of_year - 1]);
$names[$day_of_year - 1] .= $file_name . ': ' . $_;

View File

@ -16,44 +16,53 @@ my $dec_31 = "Czech Republic: Silvestr; Hungary: Szilveszter; Poland: Korneliusz
my $tamara = "Czech Republic: 3 Jun; Hungary: 29 Dec; Poland: 3 Jun";
my $marii = 'Poland: 23 Jan, 2 Feb, 11 Feb, 25 Mar, 14 Apr, 26 Apr, 28 Apr, 3 May, 24 May, 25 May, 29 May, 2 Jun, 13 Jun, 27 Jun, 2 Jul, 16 Jul, 17 Jul, 22 Jul, 29 Jul, 2 Aug, 4 Aug, 5 Aug, 15 Aug, 22 Aug, 26 Aug, 8 Sep, 12 Sep, 15 Sep, 24 Sep, 7 Oct, 11 Oct, 16 Nov, 21 Nov, 8 Dec, 10 Dec';
my $jan_9_html = "<b>Czech Republic:</b> Vladan; <b>Hungary:</b> Marcell; <b>Poland:</b> Antoni Borzymir Julian Julianna";
my $feb_29_html = "<b>Czech Republic:</b> Horymír; <b>Poland:</b> Dobronieg Roman";
my $dec_30_html = "<b>Czech Republic:</b> David; <b>Hungary:</b> Dávid; <b>Poland:</b> Dawid Eugeniusz Katarzyna Uniedrog";
my $dec_31_html = "<b>Czech Republic:</b> Silvestr; <b>Hungary:</b> Szilveszter; <b>Poland:</b> Korneliusz Melania Sebastian Sylwester Tworzysław";
my $tamara_html = "<b>Czech Republic:</b> 3 Jun; <b>Hungary:</b> 29 Dec; <b>Poland:</b> 3 Jun";
my $marii_html = '<b>Poland:</b> 23 Jan, 2 Feb, 11 Feb, 25 Mar, 14 Apr, 26 Apr, 28 Apr, 3 May, 24 May, 25 May, 29 May, 2 Jun, 13 Jun, 27 Jun, 2 Jul, 16 Jul, 17 Jul, 22 Jul, 29 Jul, 2 Aug, 4 Aug, 5 Aug, 15 Aug, 22 Aug, 26 Aug, 8 Sep, 12 Sep, 15 Sep, 24 Sep, 7 Oct, 11 Oct, 16 Nov, 21 Nov, 8 Dec, 10 Dec';
ddg_goodie_test(
[qw( DDG::Goodie::NameDays )],
'name day mieszko' => test_zci('Poland: 1 Jan'),
'maria imieniny' => test_zci($marii),
'3 June name day' => test_zci("Czech Republic: Tamara; Hungary: Klotild Cecília; Poland: Konstantyn Leszek Paula Tamara"),
'Name Day Tamara' => test_zci($tamara),
'namedays dec 30' => test_zci($dec_30),
'name day 1 Jan' => test_zci("Hungary: Fruzsina; Poland: Mieczysław Mieszko"),
'Radmila svátek' => test_zci('Czech Republic: 3 Jan'),
'name day mieszko' => test_zci('Poland: 1 Jan', html => '<b>Poland:</b> 1 Jan'),
'maria imieniny' => test_zci($marii, html => $marii_html),
'3 June name day' => test_zci("Czech Republic: Tamara; Hungary: Klotild Cecília; Poland: Konstantyn Leszek Paula Tamara",
html => "<b>Czech Republic:</b> Tamara; <b>Hungary:</b> Klotild Cecília; <b>Poland:</b> Konstantyn Leszek Paula Tamara"),
'Name Day Tamara' => test_zci($tamara, html => $tamara_html),
'namedays dec 30' => test_zci($dec_30, html => $dec_30_html),
'name day 1 Jan' => test_zci("Hungary: Fruzsina; Poland: Mieczysław Mieszko", html => "<b>Hungary:</b> Fruzsina; <b>Poland:</b> Mieczysław Mieszko"),
'Radmila svátek' => test_zci('Czech Republic: 3 Jan', html => '<b>Czech Republic:</b> 3 Jan'),
# Genetive case
'imieniny marii' => test_zci($marii),
'imieniny Tamary' => test_zci("Poland: 3 Jun"),
'imieniny Tamara' => test_zci($tamara),
'imieniny 29 Feb' => test_zci($feb_29),
'imieniny February 29th' => test_zci($feb_29),
'imieniny marii' => test_zci($marii, html => $marii_html),
'imieniny Tamary' => test_zci("Poland: 3 Jun", html => "<b>Poland:</b> 3 Jun"),
'imieniny Tamara' => test_zci($tamara, html => $tamara_html),
'imieniny 29 Feb' => test_zci($feb_29, html => $feb_29_html),
'imieniny February 29th' => test_zci($feb_29, html => $feb_29_html),
# US date format
'name days 12/30' => test_zci($dec_30),
'name days 2/29' => test_zci($feb_29),
'name days 1 / 09' => test_zci($jan_9),
'name days 12/30' => test_zci($dec_30, html => $dec_30_html),
'name days 2/29' => test_zci($feb_29, html => $feb_29_html),
'name days 1 / 09' => test_zci($jan_9, html => $jan_9_html),
# Polish date formats
'imieniny 30.12' => test_zci($dec_30),
'imieniny 9.01' => test_zci($jan_9),
'imieniny 09.01' => test_zci($jan_9),
'imieniny 9.1' => test_zci($jan_9),
'imieniny 9 stycznia' => test_zci($jan_9),
'imieniny 9 styczeń' => test_zci($jan_9),
'imieniny 31 Grudnia' => test_zci($dec_31),
'Imieniny 31 GRUDNIA' => test_zci($dec_31),
'Imieniny 29 lutego' => test_zci($feb_29),
'imieniny 30.12' => test_zci($dec_30, html => $dec_30_html),
'imieniny 9.01' => test_zci($jan_9, html => $jan_9_html),
'imieniny 09.01' => test_zci($jan_9, html => $jan_9_html),
'imieniny 9.1' => test_zci($jan_9, html => $jan_9_html),
'imieniny 9 stycznia' => test_zci($jan_9, html => $jan_9_html),
'imieniny 9 styczeń' => test_zci($jan_9, html => $jan_9_html),
'imieniny 31 Grudnia' => test_zci($dec_31, html => $dec_31_html),
'Imieniny 31 GRUDNIA' => test_zci($dec_31, html => $dec_31_html),
'Imieniny 29 lutego' => test_zci($feb_29, html => $feb_29_html),
# Czech date formats
'svátek 9 ledna' => test_zci($jan_9),
'jmeniny 9 leden' => test_zci($jan_9),
'svátek 31 Prosince' => test_zci($dec_31),
'jmeniny 29 února' => test_zci($feb_29),
'svátek 9 ledna' => test_zci($jan_9, html => $jan_9_html),
'jmeniny 9 leden' => test_zci($jan_9, html => $jan_9_html),
'svátek 31 Prosince' => test_zci($dec_31, html => $dec_31_html),
'jmeniny 29 února' => test_zci($feb_29, html => $feb_29_html),
# Try to include some examples of queries on which it might
# appear that your answer will trigger, but does not.