56 lines
803 B
Go
56 lines
803 B
Go
package holidays
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type Holidays interface {
|
|
Name() string
|
|
Describe() string
|
|
Check(target time.Time) bool
|
|
}
|
|
|
|
type HolidayList struct {
|
|
NameStr string
|
|
Description string
|
|
Items []Holiday
|
|
}
|
|
|
|
func (hl HolidayList) Name() string {
|
|
return hl.NameStr
|
|
}
|
|
|
|
func (hl HolidayList) Check(dateVal time.Time) bool {
|
|
for _, holiday := range hl.Items {
|
|
if holiday.Check(dateVal) {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func (hl HolidayList) Describe() string {
|
|
return hl.Description
|
|
}
|
|
|
|
// Predefined Holidays
|
|
|
|
var USFederalHolidays = HolidayList{
|
|
"US Federal Holidays",
|
|
"US Federal Holidays",
|
|
[]Holiday{
|
|
NewYearsDay,
|
|
MLKHoliday,
|
|
PresidentsDay,
|
|
MemorialDay,
|
|
Juneteenth,
|
|
IndependenceDay,
|
|
LaborDay,
|
|
ColumbusDay,
|
|
VeteransDay,
|
|
Thanksgiving,
|
|
Christmas,
|
|
},
|
|
}
|