mirror of
https://github.com/InsanusMokrassar/krontab.git
synced 2026-04-13 19:52:33 +00:00
Compare commits
2 Commits
master
...
33366ac2a8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33366ac2a8 | ||
|
|
e5b33ae9b0 |
26
CHANGELOG.md
26
CHANGELOG.md
@@ -1,31 +1,5 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## 2.8.0
|
|
||||||
|
|
||||||
* `Version`:
|
|
||||||
* `Kotlin`: `2.3.10`
|
|
||||||
* `Coroutines`: `1.10.2`
|
|
||||||
* `Serialization`: `1.10.0`
|
|
||||||
* `AndroidXWork`: `2.11.1`
|
|
||||||
* `Android` (compileSdk): `36`
|
|
||||||
|
|
||||||
## 2.7.2
|
|
||||||
|
|
||||||
* `Version`:
|
|
||||||
* `Kotlin`: `2.1.10`
|
|
||||||
* `Serialization`: `1.8.0`
|
|
||||||
|
|
||||||
## 2.7.1
|
|
||||||
|
|
||||||
* Fixes in parser and checker
|
|
||||||
|
|
||||||
## 2.7.0
|
|
||||||
|
|
||||||
* `Version`:
|
|
||||||
* `Kotlin`: `2.1.0`
|
|
||||||
* `Coroutines`: `1.10.1`
|
|
||||||
* Add WASM support (solution of [#137](https://github.com/InsanusMokrassar/krontab/issues/137))
|
|
||||||
|
|
||||||
## 2.6.1
|
## 2.6.1
|
||||||
|
|
||||||
* Fixes in parsing of string parts
|
* Fixes in parsing of string parts
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||

|

|
||||||

|

|
||||||

|

|
||||||

|
|
||||||
|
|
||||||
[](https://insanusmokrassar.github.io/krontab/)
|
[](https://insanusmokrassar.github.io/krontab/)
|
||||||
[](https://docs.inmo.dev/krontab/index.html)
|
[](https://docs.inmo.dev/krontab/index.html)
|
||||||
|
|||||||
28
build.gradle
28
build.gradle
@@ -19,7 +19,6 @@ plugins {
|
|||||||
id "org.jetbrains.kotlin.multiplatform" version "$kotlin_version"
|
id "org.jetbrains.kotlin.multiplatform" version "$kotlin_version"
|
||||||
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version"
|
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version"
|
||||||
id "org.jetbrains.dokka" version "$dokka_version"
|
id "org.jetbrains.dokka" version "$dokka_version"
|
||||||
id "com.gradleup.nmcp.aggregation" version "$nmcp_version"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// temporal crutch until legacy tests will be stabled or legacy target will be removed
|
// temporal crutch until legacy tests will be stabled or legacy target will be removed
|
||||||
@@ -41,20 +40,6 @@ project.group = "dev.inmo"
|
|||||||
apply from: "publish.gradle"
|
apply from: "publish.gradle"
|
||||||
apply from: "github_release.gradle"
|
apply from: "github_release.gradle"
|
||||||
|
|
||||||
|
|
||||||
if ((project.hasProperty('SONATYPE_USER') || System.getenv('SONATYPE_USER') != null) && (project.hasProperty('SONATYPE_PASSWORD') || System.getenv('SONATYPE_PASSWORD') != null)) {
|
|
||||||
nmcpAggregation {
|
|
||||||
centralPortal {
|
|
||||||
username = project.hasProperty('SONATYPE_USER') ? project.property('SONATYPE_USER') : System.getenv('SONATYPE_USER')
|
|
||||||
password = project.hasProperty('SONATYPE_PASSWORD') ? project.property('SONATYPE_PASSWORD') : System.getenv('SONATYPE_PASSWORD')
|
|
||||||
validationTimeout = Duration.ofHours(4)
|
|
||||||
publishingType = System.getenv('PUBLISHING_TYPE') != "" ? System.getenv('PUBLISHING_TYPE') : "USER_MANAGED"
|
|
||||||
}
|
|
||||||
|
|
||||||
publishAllProjectsProbablyBreakingProjectIsolation()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
// jcenter()
|
// jcenter()
|
||||||
@@ -71,20 +56,12 @@ kotlin {
|
|||||||
browser()
|
browser()
|
||||||
nodejs()
|
nodejs()
|
||||||
}
|
}
|
||||||
androidTarget {
|
android {
|
||||||
publishLibraryVariants(
|
publishAllLibraryVariants()
|
||||||
"release",
|
|
||||||
"debug",
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
linuxX64()
|
linuxX64()
|
||||||
mingwX64()
|
mingwX64()
|
||||||
linuxArm64()
|
linuxArm64()
|
||||||
wasm {
|
|
||||||
browser()
|
|
||||||
nodejs()
|
|
||||||
d8()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
@@ -108,7 +85,6 @@ kotlin {
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation kotlin('test-common')
|
implementation kotlin('test-common')
|
||||||
implementation kotlin('test-annotations-common')
|
implementation kotlin('test-annotations-common')
|
||||||
implementation kotlin('test')
|
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlin_coroutines_version"
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlin_coroutines_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
0
changelog_parser.sh
Executable file → Normal file
0
changelog_parser.sh
Executable file → Normal file
@@ -11,20 +11,12 @@ private String getCurrentVersionChangelog(String version) {
|
|||||||
return changelogDataOS.toString().trim()
|
return changelogDataOS.toString().trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (new File(projectDir, "secret.gradle").exists()) {
|
||||||
def githubTokenVariableName = "GITHUB_RELEASE_TOKEN"
|
apply from: './secret.gradle'
|
||||||
def githubTokenVariableFromEnv = System.getenv(githubTokenVariableName)
|
|
||||||
|
|
||||||
def secretFile = new File(projectDir, "secret.gradle")
|
|
||||||
if (secretFile.exists() || project.hasProperty(githubTokenVariableName) || (githubTokenVariableFromEnv != "" && githubTokenVariableFromEnv != null)) {
|
|
||||||
if (secretFile.exists()) {
|
|
||||||
apply from: './secret.gradle'
|
|
||||||
}
|
|
||||||
apply plugin: "com.github.breadmoirai.github-release"
|
apply plugin: "com.github.breadmoirai.github-release"
|
||||||
def githubReleaseToken = project.hasProperty(githubTokenVariableName) ? project.property(githubTokenVariableName).toString() : githubTokenVariableFromEnv
|
|
||||||
|
|
||||||
githubRelease {
|
githubRelease {
|
||||||
token githubReleaseToken
|
token "${project.property('GITHUB_RELEASE_TOKEN')}"
|
||||||
|
|
||||||
owner = "InsanusMokrassar"
|
owner = "InsanusMokrassar"
|
||||||
repo = "${rootProject.name}"
|
repo = "${rootProject.name}"
|
||||||
|
|||||||
@@ -9,34 +9,32 @@ android.useAndroidX=true
|
|||||||
android.enableJetifier=false
|
android.enableJetifier=false
|
||||||
|
|
||||||
|
|
||||||
kotlin_version=2.3.10
|
kotlin_version=2.0.21
|
||||||
kotlin_coroutines_version=1.10.2
|
kotlin_coroutines_version=1.9.0
|
||||||
kotlin_serialization_version=1.10.0
|
kotlin_serialization_version=1.7.3
|
||||||
|
|
||||||
dokka_version=2.1.0
|
dokka_version=1.9.20
|
||||||
|
|
||||||
klockVersion=5.4.0
|
klockVersion=5.4.0
|
||||||
|
|
||||||
nmcp_version=1.4.4
|
|
||||||
|
|
||||||
## Github reease
|
## Github reease
|
||||||
|
|
||||||
github_release_plugin_version=2.5.2
|
github_release_plugin_version=2.5.2
|
||||||
|
|
||||||
## Android
|
## Android
|
||||||
|
|
||||||
android_gradle_version=8.12.+
|
android_gradle_version=8.2.2
|
||||||
android_minSdkVersion=21
|
android_minSdkVersion=21
|
||||||
android_compileSdkVersion=36
|
android_compileSdkVersion=35
|
||||||
android_buildToolsVersion=36.0.0
|
android_buildToolsVersion=35.0.0
|
||||||
dexcount_version=4.0.0
|
dexcount_version=4.0.0
|
||||||
junit_version=4.13.2
|
junit_version=4.12
|
||||||
test_ext_junit_version=1.3.0
|
test_ext_junit_version=1.1.3
|
||||||
espresso_core=3.7.0
|
espresso_core=3.4.0
|
||||||
|
|
||||||
androidx_work_version=2.11.1
|
androidx_work_version=2.10.0
|
||||||
|
|
||||||
## Common
|
## Common
|
||||||
|
|
||||||
version=2.8.0
|
version=2.6.1
|
||||||
android_code_version=49
|
android_code_version=45
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
|||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
|
||||||
|
|||||||
@@ -37,42 +37,42 @@ publishing {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
repositories {
|
||||||
repositories {
|
if ((project.hasProperty('GITHUBPACKAGES_USER') || System.getenv('GITHUBPACKAGES_USER') != null) && (project.hasProperty('GITHUBPACKAGES_PASSWORD') || System.getenv('GITHUBPACKAGES_PASSWORD') != null)) {
|
||||||
if ((project.hasProperty('GITHUBPACKAGES_USER') || System.getenv('GITHUBPACKAGES_USER') != null) && (project.hasProperty('GITHUBPACKAGES_PASSWORD') || System.getenv('GITHUBPACKAGES_PASSWORD') != null)) {
|
maven {
|
||||||
maven {
|
name = "GithubPackages"
|
||||||
name = "GithubPackages"
|
url = uri("https://maven.pkg.github.com/InsanusMokrassar/krontab")
|
||||||
url = uri("https://maven.pkg.github.com/InsanusMokrassar/krontab")
|
|
||||||
|
credentials {
|
||||||
credentials {
|
username = project.hasProperty('GITHUBPACKAGES_USER') ? project.property('GITHUBPACKAGES_USER') : System.getenv('GITHUBPACKAGES_USER')
|
||||||
username = project.hasProperty('GITHUBPACKAGES_USER') ? project.property('GITHUBPACKAGES_USER') : System.getenv('GITHUBPACKAGES_USER')
|
password = project.hasProperty('GITHUBPACKAGES_PASSWORD') ? project.property('GITHUBPACKAGES_PASSWORD') : System.getenv('GITHUBPACKAGES_PASSWORD')
|
||||||
password = project.hasProperty('GITHUBPACKAGES_PASSWORD') ? project.property('GITHUBPACKAGES_PASSWORD') : System.getenv('GITHUBPACKAGES_PASSWORD')
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
if ((project.hasProperty('INMONEXUS_USER') || System.getenv('INMONEXUS_USER') != null) && (project.hasProperty('INMONEXUS_PASSWORD') || System.getenv('INMONEXUS_PASSWORD') != null)) {
|
||||||
if ((project.hasProperty('INMONEXUS_USER') || System.getenv('INMONEXUS_USER') != null) && (project.hasProperty('INMONEXUS_PASSWORD') || System.getenv('INMONEXUS_PASSWORD') != null)) {
|
maven {
|
||||||
maven {
|
name = "InmoNexus"
|
||||||
name = "InmoNexus"
|
url = uri("https://nexus.inmo.dev/repository/maven-releases/")
|
||||||
url = uri("https://nexus.inmo.dev/repository/maven-releases/")
|
|
||||||
|
credentials {
|
||||||
credentials {
|
username = project.hasProperty('INMONEXUS_USER') ? project.property('INMONEXUS_USER') : System.getenv('INMONEXUS_USER')
|
||||||
username = project.hasProperty('INMONEXUS_USER') ? project.property('INMONEXUS_USER') : System.getenv('INMONEXUS_USER')
|
password = project.hasProperty('INMONEXUS_PASSWORD') ? project.property('INMONEXUS_PASSWORD') : System.getenv('INMONEXUS_PASSWORD')
|
||||||
password = project.hasProperty('INMONEXUS_PASSWORD') ? project.property('INMONEXUS_PASSWORD') : System.getenv('INMONEXUS_PASSWORD')
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
if ((project.hasProperty('SONATYPE_USER') || System.getenv('SONATYPE_USER') != null) && (project.hasProperty('SONATYPE_PASSWORD') || System.getenv('SONATYPE_PASSWORD') != null)) {
|
||||||
if ((project.hasProperty('SONATYPE_USER') || System.getenv('SONATYPE_USER') != null) && (project.hasProperty('SONATYPE_PASSWORD') || System.getenv('SONATYPE_PASSWORD') != null)) {
|
maven {
|
||||||
maven {
|
name = "sonatype"
|
||||||
name = "sonatype"
|
url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
|
||||||
url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
|
|
||||||
|
credentials {
|
||||||
credentials {
|
username = project.hasProperty('SONATYPE_USER') ? project.property('SONATYPE_USER') : System.getenv('SONATYPE_USER')
|
||||||
username = project.hasProperty('SONATYPE_USER') ? project.property('SONATYPE_USER') : System.getenv('SONATYPE_USER')
|
password = project.hasProperty('SONATYPE_PASSWORD') ? project.property('SONATYPE_PASSWORD') : System.getenv('SONATYPE_PASSWORD')
|
||||||
password = project.hasProperty('SONATYPE_PASSWORD') ? project.property('SONATYPE_PASSWORD') : System.getenv('SONATYPE_PASSWORD')
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import kotlinx.coroutines.delay
|
|||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlin.coroutines.coroutineContext
|
import kotlin.coroutines.coroutineContext
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute [block] once at the [KronScheduler.next] time and return result of [block] calculation.
|
* Execute [block] once at the [KronScheduler.next] time and return result of [block] calculation.
|
||||||
*
|
*
|
||||||
@@ -55,7 +54,7 @@ suspend inline fun <T> KronScheduler.doOnceTz(noinline block: suspend (DateTimeT
|
|||||||
* @see buildSchedule
|
* @see buildSchedule
|
||||||
*/
|
*/
|
||||||
suspend inline fun <T> doOnce(
|
suspend inline fun <T> doOnce(
|
||||||
scheduleConfig: String,
|
@Language("CronExp") scheduleConfig: String,
|
||||||
block: (DateTime) -> T
|
block: (DateTime) -> T
|
||||||
) = buildSchedule(scheduleConfig).doOnce(block)
|
) = buildSchedule(scheduleConfig).doOnce(block)
|
||||||
|
|
||||||
@@ -64,7 +63,7 @@ suspend inline fun <T> doOnce(
|
|||||||
* @see buildSchedule
|
* @see buildSchedule
|
||||||
*/
|
*/
|
||||||
suspend inline fun <T> doOnceTz(
|
suspend inline fun <T> doOnceTz(
|
||||||
scheduleConfig: String,
|
@Language("CronExp") scheduleConfig: String,
|
||||||
noinline block: suspend (DateTimeTz) -> T
|
noinline block: suspend (DateTimeTz) -> T
|
||||||
) = buildSchedule(scheduleConfig).doOnceTz(block)
|
) = buildSchedule(scheduleConfig).doOnceTz(block)
|
||||||
|
|
||||||
@@ -116,7 +115,7 @@ suspend inline fun KronScheduler.doWhileTz(noinline block: suspend (DateTimeTz)
|
|||||||
* @see buildSchedule
|
* @see buildSchedule
|
||||||
*/
|
*/
|
||||||
suspend inline fun doWhile(
|
suspend inline fun doWhile(
|
||||||
scheduleConfig: String,
|
@Language("CronExp") scheduleConfig: String,
|
||||||
block: (DateTime) -> Boolean
|
block: (DateTime) -> Boolean
|
||||||
) = buildSchedule(scheduleConfig).doWhile(block)
|
) = buildSchedule(scheduleConfig).doWhile(block)
|
||||||
|
|
||||||
@@ -127,7 +126,7 @@ suspend inline fun doWhile(
|
|||||||
*/
|
*/
|
||||||
@Deprecated("Replaceable", ReplaceWith("doWhile", "dev.inmo.krontab.doWhile"))
|
@Deprecated("Replaceable", ReplaceWith("doWhile", "dev.inmo.krontab.doWhile"))
|
||||||
suspend inline fun doWhileLocal(
|
suspend inline fun doWhileLocal(
|
||||||
scheduleConfig: String,
|
@Language("CronExp") scheduleConfig: String,
|
||||||
block: (DateTime) -> Boolean
|
block: (DateTime) -> Boolean
|
||||||
) = doWhile(scheduleConfig, block)
|
) = doWhile(scheduleConfig, block)
|
||||||
|
|
||||||
@@ -137,7 +136,7 @@ suspend inline fun doWhileLocal(
|
|||||||
* @see buildSchedule
|
* @see buildSchedule
|
||||||
*/
|
*/
|
||||||
suspend inline fun doWhileTz(
|
suspend inline fun doWhileTz(
|
||||||
scheduleConfig: String,
|
@Language("CronExp") scheduleConfig: String,
|
||||||
noinline block: suspend (DateTimeTz) -> Boolean
|
noinline block: suspend (DateTimeTz) -> Boolean
|
||||||
) = buildSchedule(scheduleConfig).doWhileTz(block)
|
) = buildSchedule(scheduleConfig).doWhileTz(block)
|
||||||
|
|
||||||
@@ -169,7 +168,7 @@ suspend inline fun KronScheduler.doInfinityTz(noinline block: suspend (DateTimeT
|
|||||||
* @see buildSchedule
|
* @see buildSchedule
|
||||||
*/
|
*/
|
||||||
suspend inline fun doInfinity(
|
suspend inline fun doInfinity(
|
||||||
scheduleConfig: String,
|
@Language("CronExp") scheduleConfig: String,
|
||||||
block: (DateTime) -> Unit
|
block: (DateTime) -> Unit
|
||||||
) = buildSchedule(scheduleConfig).doInfinity(block)
|
) = buildSchedule(scheduleConfig).doInfinity(block)
|
||||||
|
|
||||||
@@ -180,7 +179,7 @@ suspend inline fun doInfinity(
|
|||||||
*/
|
*/
|
||||||
@Deprecated("Replaceable", ReplaceWith("doInfinity", "dev.inmo.krontab.doInfinity"))
|
@Deprecated("Replaceable", ReplaceWith("doInfinity", "dev.inmo.krontab.doInfinity"))
|
||||||
suspend inline fun doInfinityLocal(
|
suspend inline fun doInfinityLocal(
|
||||||
scheduleConfig: String,
|
@Language("CronExp") scheduleConfig: String,
|
||||||
block: (DateTime) -> Unit
|
block: (DateTime) -> Unit
|
||||||
) = doInfinity(scheduleConfig, block)
|
) = doInfinity(scheduleConfig, block)
|
||||||
|
|
||||||
@@ -190,6 +189,6 @@ suspend inline fun doInfinityLocal(
|
|||||||
* @see buildSchedule
|
* @see buildSchedule
|
||||||
*/
|
*/
|
||||||
suspend inline fun doInfinityTz(
|
suspend inline fun doInfinityTz(
|
||||||
scheduleConfig: String,
|
@Language("CronExp") scheduleConfig: String,
|
||||||
noinline block: suspend (DateTimeTz) -> Unit
|
noinline block: suspend (DateTimeTz) -> Unit
|
||||||
) = buildSchedule(scheduleConfig).doInfinityTz(block)
|
) = buildSchedule(scheduleConfig).doInfinityTz(block)
|
||||||
|
|||||||
6
src/commonMain/kotlin/Language.kt
Normal file
6
src/commonMain/kotlin/Language.kt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package dev.inmo.krontab
|
||||||
|
|
||||||
|
import kotlin.OptionalExpectation
|
||||||
|
|
||||||
|
@OptionalExpectation
|
||||||
|
internal expect annotation class Language(val value: String, val prefix: String = "", val suffix: String = "")
|
||||||
@@ -43,9 +43,7 @@ private fun <T> createSimpleScheduler(from: String, dataRange: IntRange, dataCon
|
|||||||
* 1.
|
* 1.
|
||||||
* * "\\d" -> 2
|
* * "\\d" -> 2
|
||||||
* * "\\*" -> 4
|
* * "\\*" -> 4
|
||||||
* * "F" -> 7
|
|
||||||
* * "f" -> 7
|
* * "f" -> 7
|
||||||
* * "L" -> 7
|
|
||||||
* * "l" -> 7
|
* * "l" -> 7
|
||||||
* * "/" -> 6
|
* * "/" -> 6
|
||||||
* 2.
|
* 2.
|
||||||
@@ -57,7 +55,6 @@ private fun <T> createSimpleScheduler(from: String, dataRange: IntRange, dataCon
|
|||||||
* * "o" -> 10
|
* * "o" -> 10
|
||||||
* * "w" -> 10
|
* * "w" -> 10
|
||||||
* 3.
|
* 3.
|
||||||
* * "L" -> 7
|
|
||||||
* * "l" -> 7
|
* * "l" -> 7
|
||||||
* * "\\d" -> 8
|
* * "\\d" -> 8
|
||||||
* 4.
|
* 4.
|
||||||
@@ -81,8 +78,8 @@ private val checkIncomingPartTransitionsMap = listOf(
|
|||||||
listOf( // 0
|
listOf( // 0
|
||||||
Regex("\\d") to 1,
|
Regex("\\d") to 1,
|
||||||
Regex("\\*") to 3,
|
Regex("\\*") to 3,
|
||||||
Regex("[Ff]") to 6,
|
Regex("f") to 6,
|
||||||
Regex("[Ll]") to 6,
|
Regex("l") to 6,
|
||||||
Regex("/") to 5,
|
Regex("/") to 5,
|
||||||
),
|
),
|
||||||
listOf( // 1
|
listOf( // 1
|
||||||
@@ -95,7 +92,7 @@ private val checkIncomingPartTransitionsMap = listOf(
|
|||||||
Regex("w") to 9,
|
Regex("w") to 9,
|
||||||
),
|
),
|
||||||
listOf( // 2
|
listOf( // 2
|
||||||
Regex("[Ll]") to 6,
|
Regex("l") to 6,
|
||||||
Regex("\\d") to 7,
|
Regex("\\d") to 7,
|
||||||
),
|
),
|
||||||
listOf( // 3
|
listOf( // 3
|
||||||
|
|||||||
5
src/jvmMain/kotlin/Language.kt
Normal file
5
src/jvmMain/kotlin/Language.kt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package dev.inmo.krontab
|
||||||
|
|
||||||
|
import org.intellij.lang.annotations.Language
|
||||||
|
|
||||||
|
actual typealias Language = Language
|
||||||
Reference in New Issue
Block a user