Skip to content

Commit

Permalink
Merge pull request #3 from xHeaven/feature/hungarian-holidays
Browse files Browse the repository at this point in the history
Add Hungary to the supported countries
  • Loading branch information
freekmurze authored Jan 17, 2024
2 parents 5619dae + 9bb575f commit 82aee8f
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 0 deletions.
5 changes: 5 additions & 0 deletions phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,8 @@ parameters:
message: "#^Call to an undefined method Pest\\\\PendingCalls\\\\TestCall\\:\\:expect\\(\\)\\.$#"
count: 1
path: tests/ArchTest.php

-
message: "#^Method Spatie\\\\Holidays\\\\Countries\\\\Hungary\\:\\:fixedHolidays\\(\\) should return array\\<string, Carbon\\\\CarbonImmutable\\> but returns array\\<string, Carbon\\\\CarbonImmutable\\|string\\|false\\>\\.$#"
count: 1
path: src/Countries/Hungary.php
57 changes: 57 additions & 0 deletions src/Countries/Hungary.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?php

namespace Spatie\Holidays\Countries;

use Carbon\CarbonImmutable;

class Hungary extends Country
{
public function countryCode(): string
{
return 'hu';
}

public function get(int $year): array
{
$this->ensureYearCanBeCalculated($year);

$fixedHolidays = $this->fixedHolidays($year);
$variableHolidays = $this->variableHolidays($year);

return array_merge($fixedHolidays, $variableHolidays);
}

/** @return array<string, CarbonImmutable> */
protected function fixedHolidays(int $year): array
{
$dates = [
'Újév' => '01-01',
'1848-as forradalom évfordulója' => '15-03',
'A munka ünnepe' => '01-05',
'Államalapítás ünnepe' => '20-08',
'1956-os forradalom évfordulója' => '23-10',
'Mindenszentek' => '01-11',
'Karácsony' => '25-12',
'Karácsony másnapja' => '26-12',
];

foreach ($dates as $name => $date) {
$dates[$name] = CarbonImmutable::createFromFormat('d-m-Y', "{$date}-{$year}");
}

return $dates;
}

/** @return array<string, CarbonImmutable> */
protected function variableHolidays(int $year): array
{
$easter = CarbonImmutable::createFromTimestamp(easter_date($year))
->setTimezone('Europe/Brussels');

return [
'Nagypéntek' => $easter->subDays(2),
'Húsvéthétfő' => $easter->addDay(),
'Pünkösdhétfő' => $easter->addDays(50),
];
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
[
{
"name": "\u00daj\u00e9v",
"date": "01-01-2024"
},
{
"name": "1848-as forradalom \u00e9vfordul\u00f3ja",
"date": "15-03-2024"
},
{
"name": "Nagyp\u00e9ntek",
"date": "29-03-2024"
},
{
"name": "H\u00fasv\u00e9th\u00e9tf\u0151",
"date": "01-04-2024"
},
{
"name": "A munka \u00fcnnepe",
"date": "01-05-2024"
},
{
"name": "P\u00fcnk\u00f6sdh\u00e9tf\u0151",
"date": "20-05-2024"
},
{
"name": "\u00c1llamalap\u00edt\u00e1s \u00fcnnepe",
"date": "20-08-2024"
},
{
"name": "1956-os forradalom \u00e9vfordul\u00f3ja",
"date": "23-10-2024"
},
{
"name": "Mindenszentek",
"date": "01-11-2024"
},
{
"name": "Kar\u00e1csony",
"date": "25-12-2024"
},
{
"name": "Kar\u00e1csony m\u00e1snapja",
"date": "26-12-2024"
}
]
14 changes: 14 additions & 0 deletions tests/Countries/HungaryTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Spatie\Holidays\Tests\Countries;

use Carbon\CarbonImmutable;
use Spatie\Holidays\Holidays;

it('can calculate hungarian holidays', function () {
CarbonImmutable::setTestNowAndTimezone('2024-01-01');

$holidays = Holidays::get(country: 'hu');

expect($holidays)->toMatchSnapshot();
});

0 comments on commit 82aee8f

Please sign in to comment.