Sha256: 4e683622370fb85a72818a16ca7def5f8c0b4736e853252384704d80b6be37c5

Contents?: true

Size: 1.19 KB

Versions: 122

Compression:

Stored size: 1.19 KB

Contents

require 'date'

module BookKeeping
  VERSION = 1
end

class Meetup
  def self.days_of_week
    [:sunday, :monday, :tuesday, :wednesday, :thursday, :friday, :saturday]
  end

  def self.weekday_number(weekday)
    days_of_week.index(weekday)
  end

  attr_reader :year, :number
  def initialize(number, year)
    @year = year
    @number = number
    @first = Date.new(year, number, 1)
    @eighth = Date.new(year, number, 8)
    @thirteenth = Date.new(year, number, 13)
    @fifteenth = Date.new(year, number, 15)
    @twenty_second = Date.new(year, number, 22)
    @last = Date.new(year, number, -1)
  end

  def day(weekday, schedule)
    case schedule
    when :teenth then
      @thirteenth + days_til(weekday, @thirteenth)
    when :first then
      @first + days_til(weekday, @first)
    when :second then
      @eighth + days_til(weekday, @eighth)
    when :third then
      @fifteenth + days_til(weekday, @fifteenth)
    when :fourth then
      @twenty_second + days_til(weekday, @twenty_second)
    when :last then
      @last - (7 - (self.class.weekday_number(weekday) - @last.wday)) % 7
    end
  end

  private

  def days_til(weekday, day)
    (self.class.weekday_number(weekday) - day.wday) % 7
  end
end

Version data entries

122 entries across 122 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.179 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.178 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.177 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.176 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.175 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.174 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.173 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.172 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.171 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.170 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.169 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.167 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.166 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.165 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.164 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.163 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.162 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.161 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb
trackler-2.2.1.160 tracks/ruby/exercises/meetup/.meta/solutions/meetup.rb