module Pebbles::TokyuRubyKaigi

Constants

MEET_DAY
VERSION

Public Class Methods

find() click to toggle source

find next target day of TokyuRubyKaigi @return [Date]

# File lib/pebbles/tokyu_ruby_kaigi.rb, line 12
def self.find
  take(1).first
end
take(limit=10) click to toggle source

take target days of TokyuRubyKaigi @param limit @return [Array<Date>]

# File lib/pebbles/tokyu_ruby_kaigi.rb, line 19
def self.take(limit=10)
  tokyu_ruby_kaigi_dates = []
  meet_date = Date.today.day < MEET_DAY ? next_meet_date(Date.today) : next_meet_date(1.month.past)

  loop do
    tokyu_ruby_kaigi_dates << meet_date if meet_date.saturday? || meet_date.sunday? || meet_date.national_holiday?
    break if tokyu_ruby_kaigi_dates.length == limit

    meet_date = next_meet_date(meet_date + 1.month)
  end

  tokyu_ruby_kaigi_dates
end

Private Class Methods

next_meet_date(date) click to toggle source
# File lib/pebbles/tokyu_ruby_kaigi.rb, line 35
def self.next_meet_date(date)
  date.change(day: MEET_DAY)
rescue ArgumentError
  # there is not meet day in February
  date += 1.month
  retry
end