mirror of
https://github.com/InsanusMokrassar/krontab.git
synced 2024-11-26 12:08:50 +00:00
docs
This commit is contained in:
parent
237deff0e6
commit
408349be04
20
dokka.gradle
20
dokka.gradle
@ -12,7 +12,12 @@ dokka {
|
|||||||
|
|
||||||
multiplatform {
|
multiplatform {
|
||||||
global {
|
global {
|
||||||
|
perPackageOption {
|
||||||
|
prefix = "com.insanusmokrassar"
|
||||||
skipDeprecated = true
|
skipDeprecated = true
|
||||||
|
includeNonPublic = true
|
||||||
|
reportUndocumented = true
|
||||||
|
}
|
||||||
|
|
||||||
sourceLink {
|
sourceLink {
|
||||||
path = "./"
|
path = "./"
|
||||||
@ -21,8 +26,17 @@ dokka {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
common { sourceRoot { path = "src/commonMain" } }
|
common {
|
||||||
js { sourceRoot { path = "src/jsMain" } }
|
targets = ["JVM", "JS"]
|
||||||
jvm { sourceRoot { path = "src/jvmMain" } }
|
sourceRoot { path = "src/commonMain" }
|
||||||
|
}
|
||||||
|
js {
|
||||||
|
targets = ["JS"]
|
||||||
|
sourceRoot { path = "src/jsMain" }
|
||||||
|
}
|
||||||
|
jvm {
|
||||||
|
targets = ["JVM"]
|
||||||
|
sourceRoot { path = "src/jvmMain" }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,20 @@ package com.insanusmokrassar.krontab
|
|||||||
|
|
||||||
import com.soywiz.klock.DateTime
|
import com.soywiz.klock.DateTime
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface was created for abstraction of [next] operation. Currently, there is only
|
||||||
|
* [com.insanusmokrassar.krontab.internal.CronDateTimeScheduler] realisation of this interface inside of this library,
|
||||||
|
* but you it is possible to create your own realisation of this interface for scheduling, for example, depending of
|
||||||
|
* users activity or something like this
|
||||||
|
*
|
||||||
|
* @see com.insanusmokrassar.krontab.internal.CronDateTimeScheduler
|
||||||
|
*/
|
||||||
interface KronScheduler {
|
interface KronScheduler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Next [DateTime] when some action must be triggered according to settings of this instance
|
||||||
|
*
|
||||||
|
* @see com.insanusmokrassar.krontab.internal.CronDateTimeScheduler.next
|
||||||
|
*/
|
||||||
suspend fun next(relatively: DateTime = DateTime.now()): DateTime
|
suspend fun next(relatively: DateTime = DateTime.now()): DateTime
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package com.insanusmokrassar.krontab
|
|||||||
|
|
||||||
import com.insanusmokrassar.krontab.builder.buildSchedule
|
import com.insanusmokrassar.krontab.builder.buildSchedule
|
||||||
import com.insanusmokrassar.krontab.internal.CronDateTime
|
import com.insanusmokrassar.krontab.internal.CronDateTime
|
||||||
|
import com.insanusmokrassar.krontab.internal.CronDateTimeScheduler
|
||||||
|
|
||||||
internal val anyCronDateTime by lazy {
|
internal val anyCronDateTime by lazy {
|
||||||
CronDateTime()
|
CronDateTime()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.insanusmokrassar.krontab.builder
|
package com.insanusmokrassar.krontab.builder
|
||||||
|
|
||||||
import com.insanusmokrassar.krontab.CronDateTimeScheduler
|
import com.insanusmokrassar.krontab.internal.CronDateTimeScheduler
|
||||||
import com.insanusmokrassar.krontab.KronScheduler
|
import com.insanusmokrassar.krontab.KronScheduler
|
||||||
import com.insanusmokrassar.krontab.internal.CronDateTime
|
import com.insanusmokrassar.krontab.internal.CronDateTime
|
||||||
import com.insanusmokrassar.krontab.internal.fillWith
|
import com.insanusmokrassar.krontab.internal.fillWith
|
||||||
|
@ -53,6 +53,9 @@ internal data class CronDateTime(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The near [DateTime] which happens after [relativelyTo] or will be equal to [relativelyTo]
|
||||||
|
*/
|
||||||
internal fun CronDateTime.toNearDateTime(relativelyTo: DateTime = DateTime.now()): DateTime {
|
internal fun CronDateTime.toNearDateTime(relativelyTo: DateTime = DateTime.now()): DateTime {
|
||||||
var current = relativelyTo
|
var current = relativelyTo
|
||||||
|
|
||||||
|
@ -1,12 +1,20 @@
|
|||||||
package com.insanusmokrassar.krontab
|
package com.insanusmokrassar.krontab.internal
|
||||||
|
|
||||||
import com.insanusmokrassar.krontab.internal.CronDateTime
|
import com.insanusmokrassar.krontab.KronScheduler
|
||||||
import com.insanusmokrassar.krontab.internal.toNearDateTime
|
import com.insanusmokrassar.krontab.anyCronDateTime
|
||||||
import com.soywiz.klock.DateTime
|
import com.soywiz.klock.DateTime
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cron-oriented realisation of [KronScheduler]
|
||||||
|
*/
|
||||||
internal data class CronDateTimeScheduler internal constructor(
|
internal data class CronDateTimeScheduler internal constructor(
|
||||||
internal val cronDateTimes: List<CronDateTime>
|
internal val cronDateTimes: List<CronDateTime>
|
||||||
) : KronScheduler {
|
) : KronScheduler {
|
||||||
|
/**
|
||||||
|
* @return Near date using [cronDateTimes] list and getting the [Iterable.min] one
|
||||||
|
*
|
||||||
|
* @see toNearDateTime
|
||||||
|
*/
|
||||||
override suspend fun next(relatively: DateTime): DateTime {
|
override suspend fun next(relatively: DateTime): DateTime {
|
||||||
return cronDateTimes.map { it.toNearDateTime(relatively) }.min() ?: anyCronDateTime.toNearDateTime(relatively)
|
return cronDateTimes.map { it.toNearDateTime(relatively) }.min() ?: anyCronDateTime.toNearDateTime(relatively)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user