From 408349be04d7f43fe75e232772ffa4c94a6066c3 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Wed, 3 Jun 2020 21:07:10 +0600 Subject: [PATCH] docs --- dokka.gradle | 22 +++++++++++++++---- .../insanusmokrassar/krontab/KronScheduler.kt | 14 ++++++++++++ .../krontab/SchedulerShortcuts.kt | 1 + .../krontab/builder/SchedulerBuilder.kt | 2 +- .../krontab/internal/CronDateTime.kt | 3 +++ .../krontab/internal/CronDateTimeScheduler.kt | 14 +++++++++--- 6 files changed, 48 insertions(+), 8 deletions(-) diff --git a/dokka.gradle b/dokka.gradle index fdd3385..4248c4b 100644 --- a/dokka.gradle +++ b/dokka.gradle @@ -12,7 +12,12 @@ dokka { multiplatform { global { - skipDeprecated = true + perPackageOption { + prefix = "com.insanusmokrassar" + skipDeprecated = true + includeNonPublic = true + reportUndocumented = true + } sourceLink { path = "./" @@ -21,8 +26,17 @@ dokka { } } - common { sourceRoot { path = "src/commonMain" } } - js { sourceRoot { path = "src/jsMain" } } - jvm { sourceRoot { path = "src/jvmMain" } } + common { + targets = ["JVM", "JS"] + sourceRoot { path = "src/commonMain" } + } + js { + targets = ["JS"] + sourceRoot { path = "src/jsMain" } + } + jvm { + targets = ["JVM"] + sourceRoot { path = "src/jvmMain" } + } } } diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/KronScheduler.kt b/src/commonMain/kotlin/com/insanusmokrassar/krontab/KronScheduler.kt index b4ea91f..827e8bb 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/KronScheduler.kt +++ b/src/commonMain/kotlin/com/insanusmokrassar/krontab/KronScheduler.kt @@ -2,6 +2,20 @@ package com.insanusmokrassar.krontab 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 { + + /** + * @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 } diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/SchedulerShortcuts.kt b/src/commonMain/kotlin/com/insanusmokrassar/krontab/SchedulerShortcuts.kt index 9e7fcd9..5394fbc 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/SchedulerShortcuts.kt +++ b/src/commonMain/kotlin/com/insanusmokrassar/krontab/SchedulerShortcuts.kt @@ -2,6 +2,7 @@ package com.insanusmokrassar.krontab import com.insanusmokrassar.krontab.builder.buildSchedule import com.insanusmokrassar.krontab.internal.CronDateTime +import com.insanusmokrassar.krontab.internal.CronDateTimeScheduler internal val anyCronDateTime by lazy { CronDateTime() diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/SchedulerBuilder.kt b/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/SchedulerBuilder.kt index 7beb38f..161f16d 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/SchedulerBuilder.kt +++ b/src/commonMain/kotlin/com/insanusmokrassar/krontab/builder/SchedulerBuilder.kt @@ -1,6 +1,6 @@ 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.internal.CronDateTime import com.insanusmokrassar.krontab.internal.fillWith diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt index 2c9e235..9f09b0a 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt +++ b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTime.kt @@ -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 { var current = relativelyTo diff --git a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTimeScheduler.kt b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTimeScheduler.kt index b8595bb..01d6245 100644 --- a/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTimeScheduler.kt +++ b/src/commonMain/kotlin/com/insanusmokrassar/krontab/internal/CronDateTimeScheduler.kt @@ -1,12 +1,20 @@ -package com.insanusmokrassar.krontab +package com.insanusmokrassar.krontab.internal -import com.insanusmokrassar.krontab.internal.CronDateTime -import com.insanusmokrassar.krontab.internal.toNearDateTime +import com.insanusmokrassar.krontab.KronScheduler +import com.insanusmokrassar.krontab.anyCronDateTime import com.soywiz.klock.DateTime +/** + * Cron-oriented realisation of [KronScheduler] + */ internal data class CronDateTimeScheduler internal constructor( internal val cronDateTimes: List ) : KronScheduler { + /** + * @return Near date using [cronDateTimes] list and getting the [Iterable.min] one + * + * @see toNearDateTime + */ override suspend fun next(relatively: DateTime): DateTime { return cronDateTimes.map { it.toNearDateTime(relatively) }.min() ?: anyCronDateTime.toNearDateTime(relatively) }