Module: Condensation::Filters::AdvanceDateToNext

Defined in:
lib/condensation/filters/advance_date_to_next.rb

Instance Method Summary collapse

Instance Method Details

#advance_date_to_next(input, day) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/condensation/filters/advance_date_to_next.rb', line 7

def advance_date_to_next(input, day)
  return if input.nil?

  value = if input.is_a?(Time)
            input
          else
            begin
              Time.parse(input)
            rescue
              nil
            end
          end

  return input unless value.is_a?(Time)

  days = %w[sunday monday tuesday wednesday thursday friday saturday]
  day_number = days.index(day.downcase)

  unless day_number
    raise Liquid::ArgumentError, "#{day} is not a valid day"
  end

  loop do
    value += 86_400 # advance a day
    break if value.wday == day_number
  end

  value
end