Sha256: 9227e52956c4f4f385acc3c527e6c7d4291c1596bf29beedcf3cfba03c6bca08

Contents?: true

Size: 581 Bytes

Versions: 1

Compression:

Stored size: 581 Bytes

Contents

# frozen_string_literal: true

require "date"

module Matheus
  class DateOfLast < Command
    def call(day_name)
      day_name = day_name.to_s

      target_wday = wday_for(day_name) or return Failure("invalid day name: #{day_name}")
      date = Date.today
      one_day_ago = (date - 1)
      one_week_ago = date - 7
      date = one_day_ago.downto(one_week_ago).find { _1.wday == target_wday }

      puts date
    end

    private

    def wday_for(day_name)
      Date::DAYNAMES.index(day_name.capitalize) || Date::ABBR_DAYNAMES.index(day_name.capitalize)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
matheus-0.1.0 lib/matheus/date_of_last.rb