Sha256: 95114d604bfe3c4d63629bba3bac715dabf0da0e790bda6d85ec726d18429611

Contents?: true

Size: 1 KB

Versions: 1

Compression:

Stored size: 1 KB

Contents

require "pebbles/tokyu_ruby_kaigi/version"

module Pebbles
  module TokyuRubyKaigi
    require "active_support/all"
    require "holiday_japan"

    MEET_DAY = 29

    # find next target day of TokyuRubyKaigi
    # @return [Date]
    def self.find
      take(1).first
    end

    # take target days of TokyuRubyKaigi
    # @param limit
    # @return [Array<Date>]
    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

    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

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pebbles-tokyu_ruby_kaigi-0.0.2 lib/pebbles/tokyu_ruby_kaigi.rb