Module: ActivePeriod::Collection

Includes:
Enumerable
Included in:
FreePeriod, HolidayPeriod, StandardPeriod
Defined in:
lib/active_period/collection.rb,
lib/active_period/collection/free_period.rb,
lib/active_period/collection/holiday_period.rb,
lib/active_period/collection/standard_period.rb

Defined Under Namespace

Classes: FreePeriod, HolidayPeriod, StandardPeriod

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#klassObject (readonly)

Returns the value of attribute klass.



7
8
9
# File 'lib/active_period/collection.rb', line 7

def klass
  @klass
end

#periodObject (readonly)

Returns the value of attribute period.



11
12
13
# File 'lib/active_period/collection.rb', line 11

def period
  @period
end

Class Method Details

.new(klass, period) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/active_period/collection.rb', line 13

def self.new(klass, period)
  if period.is_a? ActivePeriod::StandardPeriod
    ActivePeriod::Collection::StandardPeriod.new(klass, period)
  else
    ActivePeriod::Collection::FreePeriod.new(klass, period)
  end
end

Instance Method Details

#each(&block) ⇒ Object



47
48
49
# File 'lib/active_period/collection.rb', line 47

def each(&block)
  block_given? ? enumerator.each(&block) : enumerator
end

#find_nth(limit) ⇒ Object



40
41
42
43
44
45
# File 'lib/active_period/collection.rb', line 40

def find_nth(limit)
  each.with_index do |element, index|
    return element if index == limit
  end
  return nil
end

#fourthObject



36
37
38
# File 'lib/active_period/collection.rb', line 36

def fourth
  find_nth(3)
end

#initialize(klass, period) ⇒ Object



21
22
23
24
25
26
# File 'lib/active_period/collection.rb', line 21

def initialize(klass, period)
  raise I18n.t(:param_period_must_be_a_period, scope: %i[active_period collection]) unless period.class.ancestors.include?(ActivePeriod::Period)

  @klass  = klass
  @period = period
end

#lastObject



55
56
57
# File 'lib/active_period/collection.rb', line 55

def last
  reverse_each.first
end

#reverse_each(&block) ⇒ Object



51
52
53
# File 'lib/active_period/collection.rb', line 51

def reverse_each(&block)
  block_given? ? reverse_enumerator.each(&block) : reverse_enumerator
end

#secondObject



28
29
30
# File 'lib/active_period/collection.rb', line 28

def second
  find_nth(1)
end

#thirdObject



32
33
34
# File 'lib/active_period/collection.rb', line 32

def third
  find_nth(2)
end