Multiple countries

master
W25 2014-11-22 14:48:28 +00:00
parent 9cea195c2b
commit 1f78d1fb1f
5 changed files with 802 additions and 36 deletions

View File

@ -47,7 +47,7 @@ handle query_nowhitespace_nodash => sub {
# Tracking number.
my $package_number = '';
# Exclsuive trigger.
# Exclusive trigger.
if ($1 || $2) {
$package_number = $1 || $2;
$is_capost = 2;

View File

@ -27,7 +27,7 @@ triggers any => "name day", "name days", "nameday", "namedays", "imieniny";
# Load the data file
my @names = share('Poland.txt')->slurp(iomode => '<:encoding(UTF-8)'); # Names indexed by day
my @names = (); # Names indexed by day
my %dates = (); # Days indexed by name
# File format: 366 lines (one for each day of a year).
@ -36,44 +36,70 @@ my %dates = (); # Days indexed by name
# These variations are placed after vertical bar character (|); they are
# not shown when searching for this day, but you can search for them.
sub load_days {
die "The text file must include 366 lines" unless scalar(@names) == 366;
sub load_days_file {
my $file_name = shift();
my @lines = share($file_name)->slurp(iomode => '<:encoding(UTF-8)');
$file_name =~ s/\.txt$//;
die "The text file must include 366 lines" unless scalar(@lines) == 366;
my $day_of_year = 1;
# Read names for each day and add them to the hash
for (@names) {
for (@lines) {
# Add all names, including the names after vertical bar
my $names_for_date = lc($_);
$names_for_date =~ s/\|/ /;
for my $name (split(' ', $names_for_date)) {
push(@{$dates{$name}}, $day_of_year);
push(@{$dates{$name}}, $file_name . '|' . $day_of_year);
}
# Remove the names after vertical bar (|)
chomp;
s/\s*\|.*$//;
if ($_) {
$names[$day_of_year - 1] .= "\n" if ($names[$day_of_year - 1]);
$names[$day_of_year - 1] .= $file_name . ': ' . $_;
}
# Advance to the next day
$day_of_year++;
}
}
sub finish_loading {
# Convert the dates to string
for (keys %dates) {
# Find all dates corresponding to this name
my @ret = ();
# Group the dates by country
my %dates_by_country = ();
foreach (@{$dates{$_}}) {
die 'Internal error' unless /^(.*?)\|(\d+)$/;
# Any leap year here, because the text file includes February, 29
my $d = DateTime->from_day_of_year(year => 2000, day_of_year => $_);
push(@ret, $d->strftime('%e %b'));
my $d = DateTime->from_day_of_year(year => 2000, day_of_year => $2);
if (exists $dates_by_country{$1}) {
$dates_by_country{$1} .= ', ';
}
$dates_by_country{$1} .= $d->strftime('%e %b');
}
$dates{$_} = join(', ', @ret);
# Convert to string
my $res = '';
foreach (sort keys %dates_by_country) {
$res .= $_ . ': ' . $dates_by_country{$_} . "\n";
}
chomp($res);
$dates{$_} = $res;
}
}
load_days();
load_days_file('Czech Republic.txt');
load_days_file('Hungary.txt');
load_days_file('Poland.txt');
finish_loading();
sub parse_other_date_formats {

View File

@ -0,0 +1,366 @@
Karina
Radmila
Diana
Dalimil
Vilma
Čestmír
Vladan
Břetislav
Bohdana
Pravoslav
Edita
Radovan
Alice
Ctirad
Drahoslav
Vladislav
Doubravka
Ilona
Běla
Slavomír
Zdeněk
Milena
Miloš
Zora
Ingrid
Otýlie
Zdislava
Robin
Marika
Hynek
Nela Hromnice
Blažej
Jarmila
Dobromila
Vanda
Veronika
Milada
Apolena
Mojmír
Božena
Slavěna
Věnceslav
Valentýn
Jiřina
Ljuba
Miloslava
Gizela
Patrik
Oldřich
Lenka
Petr
Svatopluk
Matěj
Liliana
Dorota
Alexandr
Lumír
Horymír
Bedřich
Anežka
Kamil
Stela
Kazimír
Miroslav
Tomáš
Gabriela
Františka
Viktorie
Anděla
Řehoř
Růžena
Rút Matylda
Ida
Elena Herbert
Vlastimil
Eduard
Josef
Světlana
Radek
Leona
Ivona
Gabriel
Marián
Emanuel
Dita
Soňa
Taťána
Arnošt
Kvido
Hugo
Erika
Richard
Ivana
Miroslava
Vendula
Heřman
Ema
Dušan
Darja
Izabela
Julius
Aleš
Vincenc
Anastázie
Irena
Rudolf
Valérie
Rostislav
Marcela
Alexandra
Evženie
Vojtěch
Jiří
Marek
Oto
Jaroslav
Vlastislav
Robert
Blahoslav
Zikmund
Alexej
Květoslav
Klaudie
Radoslav
Stanislav
Ctibor
Blažena
Svatava
Pankrác
Servác
Bonifác
Žofie
Přemysl
Aneta
Nataša
Ivo
Zbyšek
Monika
Emil
Vladimír
Jana
Viola
Filip
Valdemar
Vilém
Maxmilián
Ferdinand
Kamila
Laura
Jarmil
Tamara
Dalibor
Dobroslav
Norbert
Iveta
Medard
Stanislava
Gita
Bruno
Antonie
Antonín
Roland
Vít
Zbyněk
Adolf
Milan
Leoš
Květa
Alois
Pavla
Zdeňka
Jan
Ivan
Adriana
Ladislav
Lubomír
Petr Pavel
Šárka
Jaroslava
Patricie
Radomír
Prokop
Bohuslava
Nora
Drahoslava
Libuše Amálie
Olga
Bořek
Markéta
Karolína
Jindřich
Luboš
Martina
Drahomíra
Čeněk
Ilja
Vítězslav
Magdaléna
Libor
Kristýna
Jakub
Anna
Věroslav
Viktor
Marta
Bořivoj
Ignác
Oskar
Gustav
Miluše
Dominik
Kristián
Oldřiška
Lada
Soběslav
Roman
Vavřinec
Zuzana
Klára
Alena
Alan
Hana
Jáchym
Petra
Helena
Ludvík
Bernard
Johana
Bohuslav
Sandra
Bartoloměj
Radim
Luděk
Otakar
Augustýn
Evelína
Vladěna
Pavlína
Linda Samuel
Adéla
Bronislav Bronislava
Jindřiška
Boris
Boleslav
Regina | Regína
Mariana
Daniela
Irma
Denisa
Marie
Lubor
Radka
Jolana
Ludmila
Naděžda
Kryštof
Zita
Oleg
Matouš
Darina
Berta
Jaromír
Zlata
Andrea
Jonáš
Václav
Michal
Jeroným
Igor
Olívie Oliver
Bohumil
František
Eliška
Hanuš
Justýna
Věra
Štefan Sára
Marina
Andrej
Marcel
Renáta
Agáta
Tereza
Havel
Hedvika
Lukáš
Michaela
Vendelín
Brigita
Sabina
Teodor
Nina
Beáta
Erik
Šarlota Zoe
Silvie
Tadeáš
Štěpánka
Felix
Hubert
Karel
Miriam
Liběna
Saskie
Bohumír
Bohdan
Evžen
Martin
Benedikt
Tibor
Sáva
Leopold
Otmar
Mahulena
Romana
Alžběta
Nikola
Albert
Cecílie
Klement
Emílie
Kateřina
Artur
Xenie
René
Zina
Ondřej
Iva
Blanka
Svatoslav
Barbora
Jitka
Mikuláš
Ambrož
Květoslava
Vratislav
Julie
Dana
Simona
Lucie
Lýdie
Radana
Albína
Daniel
Miloslav
Ester
Dagmar
Natálie
Šimon
Vlasta
Adam Eva
Štěpán
Žaneta
Bohumila
Judita
David
Silvestr

View File

@ -0,0 +1,366 @@
Fruzsina
Ábel
Genovéva Benjámin
Titusz Leona
Simon
Boldizsár
Attila Ramóna
Gyöngyvér
Marcell
Melánia
Ágota
Ernő
Veronika
Bódog
Lóránt Loránd
Gusztáv
Antal Antónia
Piroska
Sára Márió
Fábián Sebestyén
Ágnes
Vince Artúr
Zelma Rajmund
Timót
Pál | Paul
Vanda Paula
Angelika
Károly Karola
Adél
Martina Gerda
Marcella
Ignác
Karolina Aida
Balázs
Ráhel Csenge
Ágota Ingrid
Dorottya Dóra
Tódor Rómeó
Aranka
Abigél Alex
Elvira
Bertold Marietta
Lídia Lívia
Ella Linda
Bálint Valentin
Kolos Georgina
Julianna Lilla
Donát
Bernadett
Zsuzsanna
Aladár Álmos
Eleonóra
Gerzson
Alfréd
Mátyás
Géza
Edina
Ákos Bátor
Elemér
Albin
Lujza
Kornélia
Kázmér
Adorján Adrián
Leonóra Inez
Tamás
Zoltán
Franciska Fanni
Ildikó
Szilárd
Gergely
Krisztián Ajtony
Matild
Kristóf
Henrietta
Gertrúd Patrik
Sándor Ede
József Bánk
Klaudia
Benedek
Beáta Izolda Lea
Emőke
Gábor Karina
Irén Írisz
Emánuel
Hajnalka
Gedeon Johanna
Auguszta
Zalán
Árpád
Hugó
Áron
Buda Richárd
Izidor
Vince
Vilmos Bíborka
Herman
Dénes
Erhard
Zsolt
Leó Szaniszló
Gyula
Ida
Tibor
Anasztázia Tas
Csongor
Rudolf
Andrea Ilma
Emma
Tivadar
Konrád
Csilla Noémi
Béla
György
Márk
Ervin
Zita
Valéria
Péter
Katalin Kitti
Fülöp Jakab
Zsigmond
Tímea Irma
Mónika Flórián
Györgyi
Ivett Frida
Gizella
Mihály
Gergely
Ármin Pálma
Ferenc
Pongrác
Szervác Imola
Bonifác
Zsófia Szonja
Mózes Botond
Paszkál
Erik Alexandra
Ivó Milán
Bernát Felícia
Konstantin
Júlia Rita
Dezső
Eszter Eliza
Orbán
Fülöp Evelin
Hella
Emil Csanád
Magdolna
Janka Zsanett
Angéla Petronella
Tünde
Kármen Anita
Klotild Cecília
Bulcsú
Fatime Fatima
Norbert Cintia
Róbert
Medárd
Félix
Margit Gréta
Barnabás
Villő
Antal Anett
Vazul
Jolán Vid
Jusztin
Laura Alida
Arnold Levente
Gyárfás
Rafael
Alajos Leila
Paulina
Zoltán
Iván
Vilmos
János Pál Vu Cuda
László
Levente Irén
Péter Pál
Pál
Tihamér Annamária
Ottó
Kornél Soma
Ulrik
Emese Sarolta
Csaba
Apollónia
Ellák
Lukrécia
Amália
Nóra Lili
Izabella Dalma
Jenő
Örs Stella
Henrik Roland Örkény
Valter
Endre Elek Dzsesszika
Frigyes
Emília
Illés
Dániel Daniella
Magdolna
Lenke
Kinga Kincső
Kristóf Jakab
Anna Anikó
Olga Liliána
Szabolcs
Márta Flóra
Judit Xénia
Oszkár
Boglárka
Lehel
Hermina
Domonkos Dominika
Krisztina
Berta Bettina
Ibolya
László
Emőd
Lőrinc
Zsuzsanna Tiborc
Klára
Ipoly
Marcell
Mária
Ábrahám
Jácint
Ilona
Huba
István
Sámuel Hajna
Menyhért Mirjam
Bence
Bertalan
Lajos Patrícia
Izsó
Gáspár
Ágoston
Beatrix Erna
Rózsa
Erika Bella
Egyed Egon
Rebeka Dorina
Hilda
Rozália
Viktor Lőrinc
Zakariás
Regina
Mária Adrienn
Ádám
Nikolett Hunor
Teodóra
Mária
Kornél
Szeréna Roxána
Enikő Melitta
Edit
Zsófia
Diána
Vilhelmina
Friderika
Máté Mirella
Móric
Tekla Líviusz
Gellért Mercédesz
Eufrozina Kende
Jusztina
Adalbert
Vencel
Mihály
Jeromos
Malvin
Petra
Helga
Ferenc
Aurél
Brúnó Renáta
Amália
Koppány
Dénes
Gedeon
Brigitta
Miksa
Kálmán Ede
Helén
Teréz
Gál
Hedvig
Lukács
Nándor
Vendel
Orsolya
Előd
Gyöngyi
Salamon
Blanka Bianka
Dömötör
Szabina
Simon Szimonetta
Nárcisz
Alfonz
Farkas
Marianna
Achilles
Győző
Károly
Imre
Lénárd
Rezső
Zsombor
Tivadar
Réka
Márton
Jónás Renátó
Szilvia
Aliz
Albert Lipót
Ödön
Hortenzia Gergő
Jenő
Erzsébet
Jolán
Olivér
Cecília
Kelemen Klementina
Emma
Katalin
Virág
Virgil
Stefánia
Taksony
András Andor
Elza
Melinda Vivien
Ferenc
Borbála Barbara
Vilma
Miklós
Ambrus
Mária
Natália
Judit
Árpád Árpádina
Gabriella
Luca Otília
Szilárda
Valér
Etelka Aletta
Lázár Olimpia
Auguszta
Viola
Teofil
Tamás
Zénó
Viktória
Ádám Éva
Eugénia
István
János
Kamilla
Tamás Tamara
Dávid
Szilveszter

View File

@ -9,36 +9,44 @@ use DDG::Test::Goodie;
zci answer_type => "name_days_w25";
zci is_cached => 1;
my $jan_9 = "Czech Republic: Vladan\nHungary: Marcell\nPoland: Antoni Borzymir Julian Julianna";
my $feb_29 = "Czech Republic: Horymír\nPoland: Dobronieg Roman";
my $dec_30 = "Czech Republic: David\nHungary: Dávid\nPoland: Dawid Eugeniusz Katarzyna Uniedrog";
my $dec_31 = "Czech Republic: Silvestr\nHungary: Szilveszter\nPoland: Korneliusz Melania Sebastian Sylwester Tworzysław";
my $tamara = "Czech Republic: 3 Jun\nHungary: 29 Dec\nPoland: 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';
ddg_goodie_test(
[qw( DDG::Goodie::NameDays )],
'name day mieszko' => test_zci(' 1 Jan'),
'maria imieniny' => test_zci('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'),
'3 June name day' => test_zci('Konstantyn Leszek Paula Tamara'),
'Name Day Tamara' => test_zci(' 3 Jun'),
'namedays dec 30' => test_zci('Dawid Eugeniusz Katarzyna Uniedrog'),
'name day 1 Jan' => test_zci('Mieczysław Mieszko'),
'name day mieszko' => test_zci('Poland: 1 Jan'),
'maria imieniny' => test_zci($marii),
'3 June name day' => test_zci("Czech Republic: Tamara\nHungary: Klotild Cecília\nPoland: 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\nPoland: Mieczysław Mieszko"),
# Genetive case
'imieniny marii' => test_zci('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'),
'imieniny Tamary' => test_zci(' 3 Jun'),
'imieniny 29 Feb' => test_zci('Dobronieg Roman'),
'imieniny February 29th' => test_zci('Dobronieg Roman'),
'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),
# US date format
'name days 12/30' => test_zci('Dawid Eugeniusz Katarzyna Uniedrog'),
'name days 2/29' => test_zci('Dobronieg Roman'),
'name days 1 / 09' => test_zci('Antoni Borzymir Julian Julianna'),
'name days 12/30' => test_zci($dec_30),
'name days 2/29' => test_zci($feb_29),
'name days 1 / 09' => test_zci($jan_9),
# Polish date formats
'imieniny 30.12' => test_zci('Dawid Eugeniusz Katarzyna Uniedrog'),
'imieniny 9.01' => test_zci('Antoni Borzymir Julian Julianna'),
'imieniny 09.01' => test_zci('Antoni Borzymir Julian Julianna'),
'imieniny 9.1' => test_zci('Antoni Borzymir Julian Julianna'),
'imieniny 9 stycznia' => test_zci('Antoni Borzymir Julian Julianna'),
'imieniny 9 styczeń' => test_zci('Antoni Borzymir Julian Julianna'),
'imieniny 31 Grudnia' => test_zci('Korneliusz Melania Sebastian Sylwester Tworzysław'),
'Imieniny 31 GRUDNIA' => test_zci('Korneliusz Melania Sebastian Sylwester Tworzysław'),
'Imieniny 29 lutego' => test_zci('Dobronieg Roman'),
'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),
# Try to include some examples of queries on which it might
# appear that your answer will trigger, but does not.