Sha256: 5674d96a3040f893a0306fef58a82967a4358461dc7899cead9cd08848c8f610

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

# frozen_string_literal: true

require_relative '../../../../calculation/stella/lunar/choukei_value'

require_relative '../../cycle/remainder'

require_relative './adjustment'

# :nodoc:
module Zakuro
  # :nodoc:
  module Senmyou
    # :nodoc:
    module Lunar
      #
      # Value 月補正値
      #
      module Value
        # :reek:TooManyStatements { max_statements: 9 }

        class << self
          #
          # 月の運行による補正値を算出する
          #
          # @param [Cycle::LunarRemainder] remainder 月の大余小余
          # @param [True, False] forward 進(遠地点より数える)/退(近地点より数える)
          #
          # @return [Integer] 補正値
          #
          def get(remainder:, forward:)
            valid?(remainder: remainder)

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

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

            value = row.value

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

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

            value.stack + day
          end

          private

          #
          # 大余小余を検証する
          #
          # @param [Cycle::LunarRemainder] remainder 大余小余
          #
          # @return [True] 正しい(月の位相計算に使う大余小余)
          # @return [True] 正しくない
          #
          # @raise [ArgumentError] 引数エラー
          #
          def valid?(remainder:)
            return if remainder.is_a?(Cycle::LunarRemainder)

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
zakuro-0.9.0 lib/zakuro/version/senmyou/stella/lunar/value.rb
zakuro-0.8.0 lib/zakuro/version/senmyou/stella/lunar/value.rb