Method: When::Coordinates::Residue::Enumerator#initialize

Defined in:
lib/when_exe/coordinates.rb

#initialize(parent, range, count_limit = nil) ⇒ Enumerator #initialize(parent, first, direction, count_limit) ⇒ Enumerator

オブジェクトの生成

Overloads:

  • #initialize(parent, range, count_limit = nil) ⇒ Enumerator

    Parameters:

  • #initialize(parent, first, direction, count_limit) ⇒ Enumerator

    Parameters:

    • parent (When::Coordinates::Residue)

      生成元の剰余類オブジェクト

    • first (When::TM::TemporalPosition)

      始点

    • direction (Symbol)

      :forward - 昇順, :reverse - 降順

    • count_limit (Integer)

      繰り返し回数(デフォルトは指定なし)



632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
# File 'lib/when_exe/coordinates.rb', line 632

def initialize(*args)
  case args[1]
  when When::TimeValue
    first   = args[1] & args[0]
    first   = args[1] & (args[0] << 1) if args[2] == :reverse && first > args[1]
    args[1] = first
  when Range
    first   =  args[1].first & args[0]
    args[1] = (args[1].exclude_end?) ? (first...args[1].last) : (first..args[1].last)
  else
    raise TypeError, "Second Argument should be 'When::TM::(Temporal)Position'"
  end
  @period = When::TM::PeriodDuration.new(args[0].divisor,
                                         When::Coordinates::PRECISION[args[0].units] || When::DAY)
  super(*args)
end