update kdocs

This commit is contained in:
InsanusMokrassar 2020-12-06 01:40:29 +06:00
parent 05af4d1f67
commit 3162780447
4 changed files with 45 additions and 29 deletions

View File

@ -1,6 +1,4 @@
dokka { dokkaHtml {
outputFormat = 'html'
switch (true) { switch (true) {
case project.hasProperty("DOKKA_PATH"): case project.hasProperty("DOKKA_PATH"):
outputDirectory = project.property("DOKKA_PATH").toString() outputDirectory = project.property("DOKKA_PATH").toString()
@ -10,33 +8,30 @@ dokka {
break break
} }
multiplatform { dokkaSourceSets {
global { configureEach {
perPackageOption { skipDeprecated.set(true)
prefix = "dev.inmo" includeNonPublic.set(true)
skipDeprecated = true reportUndocumented.set(true)
includeNonPublic = true
reportUndocumented = true
}
sourceLink { sourceLink {
path = "./" localDirectory.set(file("./"))
url = "https://github.com/InsanusMokrassar/krontab/blob/master/" remoteUrl.set(new URL("https://github.com/InsanusMokrassar/krontab/blob/master/"))
lineSuffix = "#L" remoteLineSuffix.set("#L")
} }
} }
common { named("commonMain") {
targets = ["JVM", "JS"]
sourceRoot { path = "src/commonMain" } sourceRoot { path = "src/commonMain" }
} }
js {
targets = ["JS"] //
sourceRoot { path = "src/jsMain" } // named("jsMain") {
} // sourceRoot { path = "src/jsMain" }
jvm { // }
targets = ["JVM"] //
sourceRoot { path = "src/jvmMain" } // named("jvmMain") {
} // sourceRoot { path = "src/jvmMain" }
// }
} }
} }

View File

@ -9,7 +9,7 @@ kotlin.incremental.multiplatform=true
kotlin_version=1.4.20 kotlin_version=1.4.20
kotlin_coroutines_version=1.4.2 kotlin_coroutines_version=1.4.2
dokka_version=0.10.1 dokka_version=1.4.20
klockVersion=2.0.1 klockVersion=2.0.1

View File

@ -3,29 +3,42 @@ package dev.inmo.krontab.collection
import com.soywiz.klock.DateTime import com.soywiz.klock.DateTime
import dev.inmo.krontab.KronScheduler import dev.inmo.krontab.KronScheduler
import dev.inmo.krontab.anyCronDateTime import dev.inmo.krontab.anyCronDateTime
import dev.inmo.krontab.internal.*
import dev.inmo.krontab.internal.CronDateTimeScheduler import dev.inmo.krontab.internal.CronDateTimeScheduler
import dev.inmo.krontab.internal.merge
import dev.inmo.krontab.internal.toNearDateTime import dev.inmo.krontab.internal.toNearDateTime
/**
* This scheduler will be useful in case you want to unite several different [KronScheduler]s
*/
data class CollectionKronScheduler private constructor( data class CollectionKronScheduler private constructor(
internal val schedulers: MutableList<KronScheduler> internal val schedulers: MutableList<KronScheduler>
) : KronScheduler { ) : KronScheduler {
internal constructor(schedulers: List<KronScheduler>) : this(schedulers.toMutableList()) internal constructor(schedulers: List<KronScheduler>) : this(schedulers.toMutableList())
internal constructor() : this(mutableListOf()) internal constructor() : this(mutableListOf())
/**
* Add [kronScheduler] into its [schedulers] list
*
* * When [kronScheduler] is [CronDateTimeScheduler] it will merge all [CronDateTimeScheduler]s from [schedulers] list
* and this [kronScheduler] using [merge] function
* * When [kronScheduler] is [CollectionKronScheduler] it this instance will include all [kronScheduler]
* [schedulers]
* * Otherwise [kronScheduler] will be added to [schedulers] list
*/
fun include(kronScheduler: KronScheduler) { fun include(kronScheduler: KronScheduler) {
when (kronScheduler) { when (kronScheduler) {
is CronDateTimeScheduler -> { is CronDateTimeScheduler -> {
val resultCronDateTimes = kronScheduler.cronDateTimes.toMutableList() val resultCronDateTimes = mutableListOf(kronScheduler)
schedulers.removeAll { schedulers.removeAll {
if (it is CronDateTimeScheduler) { if (it is CronDateTimeScheduler) {
resultCronDateTimes.addAll(it.cronDateTimes) resultCronDateTimes.add(it)
true
} else { } else {
false false
} }
} }
schedulers.add( schedulers.add(
CronDateTimeScheduler(resultCronDateTimes.distinct()) merge(resultCronDateTimes)
) )
} }
is CollectionKronScheduler -> kronScheduler.schedulers.forEach { is CollectionKronScheduler -> kronScheduler.schedulers.forEach {

View File

@ -30,3 +30,11 @@ internal data class CronDateTimeScheduler internal constructor(
} }
} }
/**
* @return New instance of [CronDateTimeScheduler] with all unique [CronDateTimeScheduler.cronDateTimes] of
* [kronDateTimeSchedulers] included
*/
@Suppress("NOTHING_TO_INLINE")
internal inline fun merge(kronDateTimeSchedulers: List<CronDateTimeScheduler>) = CronDateTimeScheduler(
kronDateTimeSchedulers.flatMap { it.cronDateTimes }.distinct()
)