Sha256: df378f9d26a9076827e8c61c06c186a40cbacbb71c786d17bb1aa50b528f9296

Contents?: true

Size: 1.15 KB

Versions: 185

Compression:

Stored size: 1.15 KB

Contents

import java.time.DayOfWeek
import java.time.LocalDate

case class Meetup(month: Int, year: Int) {
  private val thirteenth = LocalDate.of(year, month, 13)
  private val first = LocalDate.of(year, month, 1)
  private val nextMonth = first.plusMonths(1)

  def teenth(day: Int): LocalDate = thirteenth.next(day)
  def first(day: Int): LocalDate = first.next(day)
  def second(day: Int): LocalDate = first(day).plusDays(7)
  def third(day: Int): LocalDate = second(day).plusDays(7)
  def fourth(day: Int): LocalDate = third(day).plusDays(7)
  def last(day: Int): LocalDate = nextMonth.next(day).minusDays(7)

  implicit class LocalDateOps(self: LocalDate) {
    def next(dayOfWeek: Int): LocalDate = self.plusDays(daysUntil(dayOfWeek))

    def daysUntil(dayOfWeek: Int): Int = (Meetup.Sun - this.dayOfWeek + dayOfWeek) % 7

    def dayOfWeek: Int = self.getDayOfWeek.getValue
  }
}

object Meetup {
  val Mon = DayOfWeek.MONDAY.getValue
  val Tue = DayOfWeek.TUESDAY.getValue
  val Wed = DayOfWeek.WEDNESDAY.getValue
  val Thu = DayOfWeek.THURSDAY.getValue
  val Fri = DayOfWeek.FRIDAY.getValue
  val Sat = DayOfWeek.SATURDAY.getValue
  val Sun = DayOfWeek.SUNDAY.getValue
}

Version data entries

185 entries across 185 versions & 1 rubygems

Version Path
trackler-2.2.1.40 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.39 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.38 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.37 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.36 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.35 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.34 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.33 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.32 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.31 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.30 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.29 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.28 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.27 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.26 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.25 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.24 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.23 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.22 tracks/scala/exercises/meetup/example.scala
trackler-2.2.1.21 tracks/scala/exercises/meetup/example.scala