Class: Zakuro::Calculation::Option::VanishedDate::Location

Inherits:
Object
  • Object
show all
Defined in:
lib/zakuro/calculation/option/vanished_date/location.rb

Overview

Location 滅日位置

Constant Summary collapse

IDEAL_MONTH =

Returns 理想上の月日数.

Returns:

  • (Integer)

    理想上の月日数

30

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context:, average_remainder:) ⇒ Location

初期化

Parameters:



36
37
38
39
40
41
42
43
# File 'lib/zakuro/calculation/option/vanished_date/location.rb', line 36

def initialize(context:, average_remainder:)
  parameter = context.resolver.vanished_date_parameter.new
  @context = context
  @valid = parameter.valid
  @limit = parameter.limit
  @average_remainder = average_remainder
  @remainder_class = parameter.remainder_class
end

Instance Attribute Details

#average_remainderCycle::AbstractRemainder (readonly)

Returns 経朔.

Returns:



26
27
28
# File 'lib/zakuro/calculation/option/vanished_date/location.rb', line 26

def average_remainder
  @average_remainder
end

#contextContext::Context (readonly)

Returns 暦コンテキスト.

Returns:



19
20
21
# File 'lib/zakuro/calculation/option/vanished_date/location.rb', line 19

def context
  @context
end

#limitCycle::AbstractRemainder (readonly)

Returns 「有没之気」判定.

Returns:



24
25
26
# File 'lib/zakuro/calculation/option/vanished_date/location.rb', line 24

def limit
  @limit
end

#remainder_classClass (readonly)

Returns 滅余クラス.

Returns:

  • (Class)

    滅余クラス



28
29
30
# File 'lib/zakuro/calculation/option/vanished_date/location.rb', line 28

def remainder_class
  @remainder_class
end

#validTrue, False (readonly)

Returns:

  • (True)

    有効

  • (False)

    無効



22
23
24
# File 'lib/zakuro/calculation/option/vanished_date/location.rb', line 22

def valid
  @valid
end

Instance Method Details

#exist?True, False

滅日が存在するか?

Returns:

  • (True)

    存在あり

  • (False)

    存在なし



61
62
63
64
65
66
# File 'lib/zakuro/calculation/option/vanished_date/location.rb', line 61

def exist?
  minute_later = average_remainder.class.new(
    day: 0, minute: average_remainder.minute, second: average_remainder.second
  )
  minute_later < limit
end

#getCycle::AbstractRemainder

「滅余」を返す

Returns:



73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/zakuro/calculation/option/vanished_date/location.rb', line 73

def get
  # 経朔の小余 * 30
  minute = remainder_class.new(
    day: 0, minute: IDEAL_MONTH * average_remainder.minute, second: 0
  )

  day = remainder_class.new(day: average_remainder.day, minute: 0, second: 0)

  minute.add!(day)

  # p "location.minute: #{minute.format}"

  minute
end

#invalid?True, False

不正か

Returns:

  • (True)

    不正

  • (False)

    不正なし



51
52
53
# File 'lib/zakuro/calculation/option/vanished_date/location.rb', line 51

def invalid?
  !@valid
end