module Zakuro::Daien::Lunar::Value

Value 月補正値

Constants

LOGGER

@return [Output::Logger] ロガー

Public Class Methods

get(remainder:) click to toggle source

月の運行による補正値を算出する

@param [Cycle::LunarRemainder] remainder 月の大余小余

@return [Integer] 補正値

# File lib/zakuro/version/daien/stella/lunar/value.rb, line 31
def self.get(remainder:)
  valid?(remainder: remainder)

  day, minute = Calculation::Lunar::ChoukeiValue.remainder_without_second(
    remainder: remainder
  )

  # 引き当て
  row = Adjustment.specify(day: day, minute: minute)

  value = row.value

  # LOGGER.debug("value.per: #{value.per}")
  # LOGGER.debug("row.denominator: #{row.denominator}")
  # LOGGER.debug("value.stack: #{value.stack}")

  minus_minute = Adjustment.minus_minute(day: day, minute: minute)

  day = Calculation::Lunar::ChoukeiValue.rounded_day(
    per: value.per, denominator: row.denominator, minute: minus_minute
  )

  # LOGGER.debug("day: #{day}")

  value.stack + day
end

Private Class Methods

valid?(remainder:) click to toggle source

大余小余を検証する

@param [Cycle::LunarRemainder] remainder 大余小余

@return [True] 正しい(月の位相計算に使う大余小余) @return [True] 正しくない

# File lib/zakuro/version/daien/stella/lunar/value.rb, line 66
def self.valid?(remainder:)
  return if remainder.is_a?(Cycle::LunarRemainder)

  raise ArgumentError, "unmatch parameter type: #{remainder.class}"
end