require 'mk_calendar/compute'

module MkCalendar
  class Calendar
    attr_reader :year, :month, :day, :jd, :jd_jst

    include MkCalendar::Compute

    def initialize(ymd)
      @year, @month, @day = ymd
      @jd = gc2jd(@year, @month, @day)
      @jd_jst = @jd + Const::JST_D
    end

    #=========================================================================
    # 休日
    #=========================================================================
    def holiday
      return compute_holiday(@year, @month, @day)
    end

    #=========================================================================
    # 二十四節気
    #=========================================================================
    def sekki_24
      return compute_sekki_24(@jd_jst)
    end

    #=========================================================================
    # 雑節
    #=========================================================================
    def zassetsu
      return compute_zassetsu(@jd_jst)
    end

    #=========================================================================
    # 曜日
    #=========================================================================
    def yobi
      return compute_yobi(@jd_jst)
    end

    #=========================================================================
    # 干支
    #=========================================================================
    def kanshi
      return compute_kanshi(@jd_jst)
    end

    #=========================================================================
    # 節句
    #=========================================================================
    def sekku
      return compute_sekku(@month, @day)
    end

    #=========================================================================
    # 視黄経（太陽）
    #=========================================================================
    def lambda
      return compute_lambda(@jd_jst)
    end

    #=========================================================================
    # 視黄経（月）
    #=========================================================================
    def alpha
      return compute_alpha(@jd_jst)
    end

    #=========================================================================
    # 月齢（正午）
    #=========================================================================
    def moonage
      return compute_moonage(@jd_jst)
    end

    #=========================================================================
    # 旧暦
    #=========================================================================
    def oc
      return compute_oc(@jd_jst)
    end
  end
end

