Method: When::CalendarNote::Japanese::Dates#initialize

Defined in:
lib/when_exe/region/japanese/notes.rb

#initialize(date, year = date.most_significant_coordinate, precision = date.precision, cal4note = nil) ⇒ Dates

初期設定



427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
# File 'lib/when_exe/region/japanese/notes.rb', line 427

def initialize(date, year=date.most_significant_coordinate, precision=date.precision, cal4note=nil)

  # 暦注パターン
  if cal4note
    # 年代による判定
    (1...NoteRange.size).to_a.reverse.each do |i|
      if year >= NoteRange[i][0]
        @range = i
        break
      end
    end
    @range ||= 0
  else
    # 暦法による判定
    cal4note = Cal4Note.new(date.frame, date.frame.twin)
    @range =
      case cal4note.l_calendar.formula[-1]
      when When::Ephemeris::ChineseTrueLunation::JujiMethods ; 11 # 江戸時代の暦
      when When::Ephemeris::ChineseTrueLunation
        date.frame.twin =~ /戊寅|麟徳/ ? 1 : 10 # 唐代定朔暦(儀鳳暦 or 宣明暦)
      when When::Ephemeris::MeanLunation   ;  0 # 唐代以前平朔暦(元嘉暦)
      else                                 ; 15 # 現代の旧暦
      end
  end

  # 具注暦の配置
  @index_g = NoteRange[@range][1]

  # 七十二候
  @index_s = NoteRange[@range][2]

  # その他の属性
  @year      = year
  @precision = precision
  @cal4note  = cal4note
  @o_date    = date
  @l_date    = @cal4note.l_calendar ^ date
  @m_date    = date.frame.kind_of?(When::CalendarTypes::Christian) ? @l_date : @o_date
  @s_date    = @cal4note.s_calendar ^ date
end