module Holidays::NZ

def self.holidays_by_month

def self.holidays_by_month
  {
            0 => [{:function => "easter(year)", :function_arguments => [:year], :function_modifier => -2, :name => "Good Friday", :regions => [:nz]},
        {:function => "easter(year)", :function_arguments => [:year], :function_modifier => 1, :name => "Easter Monday", :regions => [:nz]},
        {:function => "matariki(year)", :function_arguments => [:year], :name => "Matariki", :regions => [:nz]}],
  1 => [{:mday => 1, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "New Year's Day", :regions => [:nz]},
        {:mday => 2, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Day after New Year's Day", :regions => [:nz]},
        {:mday => 17, :name => "Southland Anniversary Day", :regions => [:nz_sl]},
        {:mday => 22, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Wellington Anniversary Day", :regions => [:nz_we]},
        {:mday => 29, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Auckland Anniversary Day", :regions => [:nz_ak]},
        {:mday => 29, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Northland Anniversary Day", :regions => [:nz_nl]}],
  2 => [{:mday => 1, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Nelson Anniversary Day", :regions => [:nz_ne]},
        {:mday => 6, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Waitangi Day", :regions => [:nz]}],
  3 => [{:mday => 23, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Otago Anniversary Day", :regions => [:nz_ot]},
        {:wday => 1, :week => 2, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Taranaki Anniversary Day", :regions => [:nz_ta]}],
  4 => [{:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "ANZAC Day", :regions => [:nz]}],
  6 => [{:wday => 1, :week => 1, :year_ranges => { :until => 2022 },:name => "Queen's Birthday", :regions => [:nz]},
        {:wday => 1, :week => 1, :year_ranges => { :from => 2023 },:name => "King's Birthday", :regions => [:nz]}],
  9 => [{:wday => 1, :week => 4, :name => "Dominion Day", :regions => [:nz_sc]}],
  10 => [{:wday => 1, :week => 1, :observed => "previous_friday(date)", :observed_arguments => [:date], :name => "Hawke's bay Anniversary Day", :regions => [:nz_hb]},
        {:wday => 1, :week => 4, :name => "Labour Day", :regions => [:nz]},
        {:wday => 1, :week => 4, :observed => "next_week(date)", :observed_arguments => [:date], :name => "Marlborough Anniversary Day", :regions => [:nz_mb]}],
  11 => [{:wday => 5, :week => 2, :name => "Canterbury Anniversary Day", :regions => [:nz_ca]},
        {:mday => 30, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Chatham Island Anniversary Day", :regions => [:nz_ch]}],
  12 => [{:mday => 1, :observed => "closest_monday(date)", :observed_arguments => [:date], :name => "Westland Anniversary Day", :regions => [:nz_wl]},
        {:mday => 25, :observed => "to_monday_if_weekend(date)", :observed_arguments => [:date], :name => "Christmas Day", :regions => [:nz]},
        {:mday => 26, :observed => "to_weekday_if_boxing_weekend(date)", :observed_arguments => [:date], :name => "Boxing Day", :regions => [:nz]}]
  }
end