Switch to aliases in the JSON, leverage pre-processed hash
parent
a9ed5ed5bb
commit
511f0b8874
|
@ -7,10 +7,18 @@ use DateTime;
|
|||
use DDG::Goodie;
|
||||
use JSON;
|
||||
|
||||
with 'DDG::GoodieRole::NumberStyler';
|
||||
my $number_regex = number_style_regex();
|
||||
|
||||
my $definitions_json = share('definitions.json')->slurp();
|
||||
my $year_definitions = decode_json($definitions_json);
|
||||
|
||||
triggers any => keys $year_definitions;
|
||||
my %year_map_with_aliases = map {
|
||||
my $name = $_;
|
||||
map { $_ => $name } ($name, @{$year_definitions->{$name}->{'aliases'} // []})
|
||||
} (keys $year_definitions);
|
||||
|
||||
triggers any => keys %year_map_with_aliases;
|
||||
|
||||
zci answer_type => 'date_conversion';
|
||||
zci is_cached => 1;
|
||||
|
@ -19,11 +27,15 @@ handle query_parts => sub {
|
|||
# Ignore single word queries
|
||||
return unless scalar(@_) > 1;
|
||||
|
||||
if ($_ =~ /^(.*\b)([A-Za-z]+)\s+(\d*[1-9]\d*)(.*\b)$/i) {
|
||||
if ($_ =~ /^(.*\b)([A-Za-z]+)\s+($number_regex)(.*\b)$/i) {
|
||||
my $era_name = lc($2);
|
||||
my $era_year = $3;
|
||||
my $gregorian_year_started = $year_definitions->{$era_name}{'gregorian_year_started'};
|
||||
my $wikipedia_link = $year_definitions->{$era_name}{'wikipedia_link'};
|
||||
|
||||
my $parent_era = $year_map_with_aliases{$era_name};
|
||||
my $era_hash = $year_definitions->{$parent_era};
|
||||
|
||||
my $gregorian_year_started = $era_hash->{'gregorian_year_started'};
|
||||
my $wikipedia_link = $era_hash->{'wikipedia_link'};
|
||||
my $year = $gregorian_year_started + $era_year;
|
||||
my $era = DateTime->now->set_year($year)->era;
|
||||
|
||||
|
|
|
@ -5,18 +5,12 @@
|
|||
},
|
||||
"taisho": {
|
||||
"gregorian_year_started": 1911,
|
||||
"wikipedia_link": "https://en.wikipedia.org/wiki/Taisho_period"
|
||||
},
|
||||
"taishou": {
|
||||
"gregorian_year_started": 1911,
|
||||
"aliases": ["taishou"],
|
||||
"wikipedia_link": "https://en.wikipedia.org/wiki/Taisho_period"
|
||||
},
|
||||
"showa": {
|
||||
"gregorian_year_started": 1925,
|
||||
"wikipedia_link": "https://en.wikipedia.org/wiki/Showa_period"
|
||||
},
|
||||
"shouwa": {
|
||||
"gregorian_year_started": 1925,
|
||||
"aliases": ["shouwa"],
|
||||
"wikipedia_link": "https://en.wikipedia.org/wiki/Showa_period"
|
||||
},
|
||||
"heisei": {
|
||||
|
@ -37,10 +31,7 @@
|
|||
},
|
||||
"bengali": {
|
||||
"gregorian_year_started": 593,
|
||||
"wikipedia_link": "https://en.wikipedia.org/wiki/Bengali_calendar"
|
||||
},
|
||||
"bangla": {
|
||||
"gregorian_year_started": 593,
|
||||
"aliases": ["bangla"],
|
||||
"wikipedia_link": "https://en.wikipedia.org/wiki/Bengali_calendar"
|
||||
},
|
||||
"rumi": {
|
||||
|
@ -57,10 +48,7 @@
|
|||
},
|
||||
"discordian": {
|
||||
"gregorian_year_started": -1166,
|
||||
"wikipedia_link": "https://en.wikipedia.org/wiki/Discordian_calendar"
|
||||
},
|
||||
"erisian": {
|
||||
"gregorian_year_started": -1166,
|
||||
"aliases": ["erisian"],
|
||||
"wikipedia_link": "https://en.wikipedia.org/wiki/Discordian_calendar"
|
||||
},
|
||||
"nanakshahi": {
|
||||
|
|
Loading…
Reference in New Issue