diff --git a/src/commonMain/kotlin/dev/inmo/krontab/utils/flows/Filters.kt b/src/commonMain/kotlin/dev/inmo/krontab/utils/flows/DateTimeFilters.kt similarity index 100% rename from src/commonMain/kotlin/dev/inmo/krontab/utils/flows/Filters.kt rename to src/commonMain/kotlin/dev/inmo/krontab/utils/flows/DateTimeFilters.kt diff --git a/src/commonMain/kotlin/dev/inmo/krontab/utils/flows/DateTimeTzFilters.kt b/src/commonMain/kotlin/dev/inmo/krontab/utils/flows/DateTimeTzFilters.kt new file mode 100644 index 0000000..e259ca0 --- /dev/null +++ b/src/commonMain/kotlin/dev/inmo/krontab/utils/flows/DateTimeTzFilters.kt @@ -0,0 +1,34 @@ +package dev.inmo.krontab.utils.flows + +import com.soywiz.klock.* +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.filter + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterSeconds(vararg seconds: Int) = filter { it.seconds in seconds } + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterMinutes(vararg minutes: Int) = filter { it.minutes in minutes } + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterHours(vararg hours: Int) = filter { it.hours in hours } + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterDaysOfMonths(vararg daysOfMonths: Int) = filter { it.dayOfMonth in daysOfMonths } + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterMonths(vararg months: Month) = filter { it.month in months } +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterMonths0(vararg months: Int) = filter { it.month0 in months } +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterMonths1(vararg months: Int) = filter { it.month1 in months } + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterYears(year: Year) = filter { it.year == year } +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterYears(vararg years: Int) = filter { it.yearInt in years } + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterWeekDays(vararg weekDays: DayOfWeek) = filter { it.dayOfWeek in weekDays } +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.filterWeekDays(vararg weekDays: Int) = filter { it.dayOfWeekInt in weekDays } diff --git a/src/commonMain/kotlin/dev/inmo/krontab/utils/flows/When.kt b/src/commonMain/kotlin/dev/inmo/krontab/utils/flows/DateTimeTzWhen.kt similarity index 100% rename from src/commonMain/kotlin/dev/inmo/krontab/utils/flows/When.kt rename to src/commonMain/kotlin/dev/inmo/krontab/utils/flows/DateTimeTzWhen.kt diff --git a/src/commonMain/kotlin/dev/inmo/krontab/utils/flows/DateTimeWhen.kt b/src/commonMain/kotlin/dev/inmo/krontab/utils/flows/DateTimeWhen.kt new file mode 100644 index 0000000..9867254 --- /dev/null +++ b/src/commonMain/kotlin/dev/inmo/krontab/utils/flows/DateTimeWhen.kt @@ -0,0 +1,25 @@ +package dev.inmo.krontab.utils.flows + +import com.soywiz.klock.* +import kotlinx.coroutines.flow.Flow + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.onlyStartsOfMinutes() = filterSeconds(0) + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.onlyStartsOfHours() = filterMinutes(0).onlyStartsOfMinutes() + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.onlyStartsOfDays() = filterHours(0).onlyStartsOfHours() + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.onlyStartsOfMondays() = filterWeekDays(DayOfWeek.Monday).onlyStartsOfDays() + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.onlyStartsOfSundays() = filterWeekDays(DayOfWeek.Sunday).onlyStartsOfDays() + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.onlyStartsOfMonths() = filterDaysOfMonths(1).onlyStartsOfDays() + +@Suppress("NOTHING_TO_INLINE") +inline fun Flow.onlyStartsOfYears() = filterMonths(Month.January).onlyStartsOfMonths()