# frozen_string_literal: true

require_relative "../calendar"
require_relative "../calendar/support/has_iso_weeks"

module TimeBoss
  module Calendars
    class Gregorian < Calendar
      include Support::HasIsoWeeks
      register!

      def initialize
        super(basis: Basis)
      end

      private

      class Basis < Calendar::Support::MonthBasis
        def start_date
          @_start_date ||= Date.civil(year, month, 1)
        end

        def end_date
          @_end_date ||= Date.civil(year, month, -1)
        end
      end
    end
  end
end