Compare commits

...
Author SHA1 Message Date
edb6d0ab49 refactor: rename package 2026-08-28 01:33:08 +02:00
8bbbd1d7dc chore: add build/release script 2026-08-28 01:27:56 +02:00
64 changed files with 268 additions and 181 deletions

View file

@ -4,3 +4,8 @@ plugins {
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.compose) apply false
}
allprojects {
version = "0.1.0"
group = "de.thetadev.formconductor"
}

View file

@ -1,9 +1,10 @@
plugins {
id("com.android.library")
alias(libs.plugins.kotlin.compose)
`maven-publish`
}
android {
namespace = "me.naingaungluu.formconductor.composeui"
namespace = "de.thetadev.formconductor.composeui"
compileSdk = 37
defaultConfig {
@ -49,3 +50,15 @@ dependencies {
api(libs.androidx.compose.ui)
api(libs.androidx.compose.runtime)
}
apply(from = "$rootDir/scripts/publish-root.gradle.kts")
afterEvaluate {
configure<PublishingExtension> {
publications {
register<MavenPublication>("release") {
artifactId = "compose-ui"
from(components["release"])
}
}
}
}

View file

@ -1,25 +1,25 @@
-keepclassmembers class * extends me.naingaungluu.formconductor.validation.rules.ValidationRule {
-keepclassmembers class * extends de.thetadev.formconductor.validation.rules.ValidationRule {
<methods>;
public static <fields>;
}
# Keep classes and properties annotated with @Form
-if @me.naingaungluu.formconductor.annotations.Form class **
-if @de.thetadev.formconductor.annotations.Form class **
-keepclassmembers,allowobfuscation,allowoptimization class <1> {
<init>(...);
<fields>;
}
# keep all the classes referenced in the @Form class
-if @me.naingaungluu.formconductor.annotations.Form class ** {
-if @de.thetadev.formconductor.annotations.Form class ** {
** *;
}
-keep,allowoptimization,allowshrinking class <1> {
<init>(...);
<fields>;
}
-keep @me.naingaungluu.formconductor.annotations.Form class * { *; }
-keep class me.naingaungluu.formconductor.** { *; }
-keep @de.thetadev.formconductor.annotations.Form class * { *; }
-keep class de.thetadev.formconductor.** { *; }
# Keep kotlin.Metadata annotations to maintain metadata on kept items
-keepattributes *Annotation*,Signature,InnerClasses

View file

@ -1,15 +1,15 @@
package me.naingaungluu.formconductor.composeui
package de.thetadev.formconductor.composeui
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.remember
import me.naingaungluu.formconductor.Form
import me.naingaungluu.formconductor.FormField
import me.naingaungluu.formconductor.FormImpl
import me.naingaungluu.formconductor.composeui.scope.FormFieldScope
import me.naingaungluu.formconductor.composeui.scope.FormFieldScopeImpl
import me.naingaungluu.formconductor.composeui.scope.FormScope
import me.naingaungluu.formconductor.composeui.scope.FormScopeImpl
import de.thetadev.formconductor.Form
import de.thetadev.formconductor.FormField
import de.thetadev.formconductor.FormImpl
import de.thetadev.formconductor.composeui.scope.FormFieldScope
import de.thetadev.formconductor.composeui.scope.FormFieldScopeImpl
import de.thetadev.formconductor.composeui.scope.FormScope
import de.thetadev.formconductor.composeui.scope.FormScopeImpl
import kotlin.reflect.KClass
import kotlin.reflect.KProperty1

View file

@ -1,8 +1,8 @@
package me.naingaungluu.formconductor.composeui.scope
package de.thetadev.formconductor.composeui.scope
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import me.naingaungluu.formconductor.FieldResult
import de.thetadev.formconductor.FieldResult
/**
* A scope interface for FormField objects

View file

@ -1,10 +1,10 @@
package me.naingaungluu.formconductor.composeui.scope
package de.thetadev.formconductor.composeui.scope
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.collectAsState
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.FormField
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.FormField
internal class FormFieldScopeImpl<V>(
private val formField: FormField<V>

View file

@ -1,9 +1,9 @@
package me.naingaungluu.formconductor.composeui.scope
package de.thetadev.formconductor.composeui.scope
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import me.naingaungluu.formconductor.FormField
import me.naingaungluu.formconductor.FormResult
import de.thetadev.formconductor.FormField
import de.thetadev.formconductor.FormResult
import kotlin.reflect.KProperty1
/**

View file

@ -1,11 +1,11 @@
package me.naingaungluu.formconductor.composeui.scope
package de.thetadev.formconductor.composeui.scope
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.collectAsState
import me.naingaungluu.formconductor.FormField
import me.naingaungluu.formconductor.FormImpl
import me.naingaungluu.formconductor.FormResult
import de.thetadev.formconductor.FormField
import de.thetadev.formconductor.FormImpl
import de.thetadev.formconductor.FormResult
import kotlin.reflect.KProperty1
internal class FormScopeImpl<T : Any>(

View file

@ -1,6 +1,7 @@
plugins {
id("java-library")
alias(libs.plugins.jetbrains.kotlin.jvm)
`maven-publish`
}
java {
sourceCompatibility = JavaVersion.VERSION_11
@ -16,3 +17,15 @@ dependencies {
implementation(libs.kotlin.reflect)
implementation(libs.kotlinx.coroutines.core)
}
apply(from = "$rootDir/scripts/publish-root.gradle.kts")
afterEvaluate {
configure<PublishingExtension> {
publications {
register<MavenPublication>("java") {
artifactId = "core"
from(components["java"])
}
}
}
}

View file

@ -1,4 +1,4 @@
package me.naingaungluu.formconductor
package de.thetadev.formconductor
import kotlin.reflect.KProperty1

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor
package de.thetadev.formconductor
import me.naingaungluu.formconductor.validation.rules.ValidationRule
import de.thetadev.formconductor.validation.rules.ValidationRule
/**
* Returns after a field validation as a result

View file

@ -1,4 +1,4 @@
package me.naingaungluu.formconductor
package de.thetadev.formconductor
import kotlinx.coroutines.flow.Flow
import kotlin.reflect.KProperty1

View file

@ -1,4 +1,4 @@
package me.naingaungluu.formconductor
package de.thetadev.formconductor
import kotlinx.coroutines.flow.MutableStateFlow

View file

@ -1,10 +1,10 @@
package me.naingaungluu.formconductor
package de.thetadev.formconductor
import kotlinx.coroutines.flow.MutableStateFlow
import me.naingaungluu.formconductor.validation.optionalFlags.OptionalFlag
import me.naingaungluu.formconductor.validation.rules.OptionalRule
import me.naingaungluu.formconductor.validation.validators.FieldValidator
import me.naingaungluu.formconductor.validation.validators.StatelessFieldValidator
import de.thetadev.formconductor.validation.optionalFlags.OptionalFlag
import de.thetadev.formconductor.validation.rules.OptionalRule
import de.thetadev.formconductor.validation.validators.FieldValidator
import de.thetadev.formconductor.validation.validators.StatelessFieldValidator
import kotlin.reflect.KProperty1
/**

View file

@ -1,13 +1,13 @@
package me.naingaungluu.formconductor
package de.thetadev.formconductor
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.combine
import me.naingaungluu.formconductor.builder.FormFieldFactory
import me.naingaungluu.formconductor.syntax.AnnotationSyntaxProcessor
import me.naingaungluu.formconductor.syntax.SyntaxProcessor
import me.naingaungluu.formconductor.syntax.SyntaxResult
import me.naingaungluu.formconductor.syntax.getErrorMessage
import de.thetadev.formconductor.builder.FormFieldFactory
import de.thetadev.formconductor.syntax.AnnotationSyntaxProcessor
import de.thetadev.formconductor.syntax.SyntaxProcessor
import de.thetadev.formconductor.syntax.SyntaxResult
import de.thetadev.formconductor.syntax.getErrorMessage
import kotlin.reflect.KClass
import kotlin.reflect.KMutableProperty
import kotlin.reflect.KParameter

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor
package de.thetadev.formconductor
import me.naingaungluu.formconductor.validation.rules.ValidationRule
import de.thetadev.formconductor.validation.rules.ValidationRule
/**
* Form result object with multiple states

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.CollateralValidationRule
import de.thetadev.formconductor.validation.rules.CollateralValidationRule
@Target(AnnotationTarget.PROPERTY)
@Retention(AnnotationRetention.RUNTIME)

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.OptionalStateRule
import de.thetadev.formconductor.validation.rules.OptionalStateRule
import kotlin.reflect.KClass
@Target(AnnotationTarget.PROPERTY)

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.EmailAddressRule
import de.thetadev.formconductor.validation.rules.EmailAddressRule
/**
* Property Annotation for [EmailAddressRule]

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.ValidationRule
import de.thetadev.formconductor.validation.rules.ValidationRule
import kotlin.reflect.KClass
internal class AnyFieldType

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.FloatRangeRule
import de.thetadev.formconductor.validation.rules.FloatRangeRule
/**
* Property Annotation for [FloatRangeRule]

View file

@ -1,4 +1,4 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.CLASS)

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.IntegerRangeRule
import de.thetadev.formconductor.validation.rules.IntegerRangeRule
/**
* Property Annotation for [IntegerRangeRule]

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.IsCheckedRule
import de.thetadev.formconductor.validation.rules.IsCheckedRule
/**
* Property Annotation for [IsCheckedRule]

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.MaxLengthRule
import de.thetadev.formconductor.validation.rules.MaxLengthRule
/**
* Property Annotation for [MaxLengthRule]

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.MinLengthRule
import de.thetadev.formconductor.validation.rules.MinLengthRule
/**
* Property Annotation for [MinLengthRule]

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.OptionalRule
import de.thetadev.formconductor.validation.rules.OptionalRule
/**
* Property Annotation for [OptionalRule]

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.annotations
package de.thetadev.formconductor.annotations
import me.naingaungluu.formconductor.validation.rules.OptionalRule
import me.naingaungluu.formconductor.validation.rules.WebUrlRule
import de.thetadev.formconductor.validation.rules.OptionalRule
import de.thetadev.formconductor.validation.rules.WebUrlRule
/**
* Property Annotation for [WebUrlRule]

View file

@ -1,8 +1,8 @@
package me.naingaungluu.formconductor.builder
package de.thetadev.formconductor.builder
import me.naingaungluu.formconductor.Form
import me.naingaungluu.formconductor.FormField
import me.naingaungluu.formconductor.FormImpl
import de.thetadev.formconductor.Form
import de.thetadev.formconductor.FormField
import de.thetadev.formconductor.FormImpl
import kotlin.reflect.KClass
import kotlin.reflect.KProperty1

View file

@ -1,8 +1,8 @@
package me.naingaungluu.formconductor.builder
package de.thetadev.formconductor.builder
import kotlinx.coroutines.flow.Flow
import me.naingaungluu.formconductor.FormField
import me.naingaungluu.formconductor.FormResult
import de.thetadev.formconductor.FormField
import de.thetadev.formconductor.FormResult
import kotlin.reflect.KProperty1
interface FormBuilderScope<T : Any> {

View file

@ -1,9 +1,9 @@
package me.naingaungluu.formconductor.builder
package de.thetadev.formconductor.builder
import kotlinx.coroutines.flow.Flow
import me.naingaungluu.formconductor.FormField
import me.naingaungluu.formconductor.FormImpl
import me.naingaungluu.formconductor.FormResult
import de.thetadev.formconductor.FormField
import de.thetadev.formconductor.FormImpl
import de.thetadev.formconductor.FormResult
import kotlin.reflect.KProperty1
class FormBuilderScopeImpl<T : Any>(

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.builder
package de.thetadev.formconductor.builder
import kotlinx.coroutines.flow.StateFlow
import me.naingaungluu.formconductor.FieldResult
import de.thetadev.formconductor.FieldResult
interface FormFieldBuilderScope<V> {
val state: StateFlow<V>

View file

@ -1,9 +1,9 @@
package me.naingaungluu.formconductor.builder
package de.thetadev.formconductor.builder
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.FormField
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.FormField
class FormFieldBuilderScopeImpl<V>(
private val formField: FormField<V>

View file

@ -1,16 +1,16 @@
package me.naingaungluu.formconductor.builder
package de.thetadev.formconductor.builder
import me.naingaungluu.formconductor.CollectableFormData
import me.naingaungluu.formconductor.FormField
import me.naingaungluu.formconductor.FormFieldImpl
import me.naingaungluu.formconductor.annotations.DynamicOptional
import me.naingaungluu.formconductor.utils.getEvaluatorInstance
import me.naingaungluu.formconductor.utils.isFieldOptional
import me.naingaungluu.formconductor.utils.validationAnnotations
import me.naingaungluu.formconductor.validation.optionalFlags.DefaultOptionalFlag
import me.naingaungluu.formconductor.validation.optionalFlags.OptionalFlag
import me.naingaungluu.formconductor.validation.optionalFlags.RuleBasedOptionalFlag
import me.naingaungluu.formconductor.validation.validators.FieldValidator
import de.thetadev.formconductor.CollectableFormData
import de.thetadev.formconductor.FormField
import de.thetadev.formconductor.FormFieldImpl
import de.thetadev.formconductor.annotations.DynamicOptional
import de.thetadev.formconductor.utils.getEvaluatorInstance
import de.thetadev.formconductor.utils.isFieldOptional
import de.thetadev.formconductor.utils.validationAnnotations
import de.thetadev.formconductor.validation.optionalFlags.DefaultOptionalFlag
import de.thetadev.formconductor.validation.optionalFlags.OptionalFlag
import de.thetadev.formconductor.validation.optionalFlags.RuleBasedOptionalFlag
import de.thetadev.formconductor.validation.validators.FieldValidator
import kotlin.reflect.KProperty1
import kotlin.reflect.full.findAnnotations
import kotlin.reflect.full.hasAnnotation

View file

@ -1,15 +1,15 @@
package me.naingaungluu.formconductor.builder
package de.thetadev.formconductor.builder
import me.naingaungluu.formconductor.CollectableFormData
import me.naingaungluu.formconductor.annotations.FieldValidation
import me.naingaungluu.formconductor.utils.getFieldValidationData
import me.naingaungluu.formconductor.validation.rules.CollateralValidationRule
import me.naingaungluu.formconductor.validation.rules.StateBasedValidationRule
import me.naingaungluu.formconductor.validation.rules.StatelessValidationRule
import me.naingaungluu.formconductor.validation.validators.CollateralFieldValidator
import me.naingaungluu.formconductor.validation.validators.FieldValidator
import me.naingaungluu.formconductor.validation.validators.StateBasedFieldValidator
import me.naingaungluu.formconductor.validation.validators.StatelessFieldValidator
import de.thetadev.formconductor.CollectableFormData
import de.thetadev.formconductor.annotations.FieldValidation
import de.thetadev.formconductor.utils.getFieldValidationData
import de.thetadev.formconductor.validation.rules.CollateralValidationRule
import de.thetadev.formconductor.validation.rules.StateBasedValidationRule
import de.thetadev.formconductor.validation.rules.StatelessValidationRule
import de.thetadev.formconductor.validation.validators.CollateralFieldValidator
import de.thetadev.formconductor.validation.validators.FieldValidator
import de.thetadev.formconductor.validation.validators.StateBasedFieldValidator
import de.thetadev.formconductor.validation.validators.StatelessFieldValidator
import kotlin.reflect.KProperty1
internal class FormFieldValidatorFactory<T : Any>(

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.syntax
package de.thetadev.formconductor.syntax
import me.naingaungluu.formconductor.annotations.AnyFieldType
import me.naingaungluu.formconductor.annotations.FieldValidation
import de.thetadev.formconductor.annotations.AnyFieldType
import de.thetadev.formconductor.annotations.FieldValidation
import kotlin.reflect.KProperty1
import kotlin.reflect.full.findAnnotation
import kotlin.reflect.full.hasAnnotation

View file

@ -1,4 +1,4 @@
package me.naingaungluu.formconductor.syntax
package de.thetadev.formconductor.syntax
import kotlin.reflect.KProperty1

View file

@ -1,4 +1,4 @@
package me.naingaungluu.formconductor.syntax
package de.thetadev.formconductor.syntax
/**
* Result types for Syntax Processor

View file

@ -1,4 +1,4 @@
package me.naingaungluu.formconductor.syntax
package de.thetadev.formconductor.syntax
import kotlin.reflect.KClass
import kotlin.reflect.KProperty

View file

@ -1,9 +1,9 @@
package me.naingaungluu.formconductor.utils
package de.thetadev.formconductor.utils
import me.naingaungluu.formconductor.annotations.DynamicOptional
import me.naingaungluu.formconductor.annotations.FieldValidation
import me.naingaungluu.formconductor.annotations.OptionalField
import me.naingaungluu.formconductor.validation.rules.OptionalStateRule
import de.thetadev.formconductor.annotations.DynamicOptional
import de.thetadev.formconductor.annotations.FieldValidation
import de.thetadev.formconductor.annotations.OptionalField
import de.thetadev.formconductor.validation.rules.OptionalStateRule
import kotlin.reflect.KClass
import kotlin.reflect.KProperty1
import kotlin.reflect.full.findAnnotation

View file

@ -1,4 +1,4 @@
package me.naingaungluu.formconductor.validation.optionalFlags
package de.thetadev.formconductor.validation.optionalFlags
class DefaultOptionalFlag(
private val isOptional: Boolean

View file

@ -0,0 +1,5 @@
package de.thetadev.formconductor.validation.optionalFlags
interface OptionalFlag {
fun evaluate(): Boolean
}

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.validation.optionalFlags
package de.thetadev.formconductor.validation.optionalFlags
import me.naingaungluu.formconductor.CollectableFormData
import me.naingaungluu.formconductor.validation.rules.OptionalStateRule
import de.thetadev.formconductor.CollectableFormData
import de.thetadev.formconductor.validation.rules.OptionalStateRule
internal class RuleBasedOptionalFlag<T: Any>(
private val formState: CollectableFormData<T>,

View file

@ -1,4 +1,4 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
/**
* Validation Rule that triggers validation of the entire form when this value is updated.

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.annotations.EmailAddress
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.annotations.EmailAddress
/**
* Validation Rule for Email Addresses

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.annotations.FloatRange
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.annotations.FloatRange
/**
* Validation Rule for Ranged Float Values

View file

@ -1,8 +1,8 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.annotations.FloatRange
import me.naingaungluu.formconductor.annotations.IntegerRange
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.annotations.FloatRange
import de.thetadev.formconductor.annotations.IntegerRange
/**
* Validation Rule for Ranged Integer Values

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.annotations.IsChecked
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.annotations.IsChecked
/**
* Validation Rule for Checkboxes

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.annotations.MaxLength
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.annotations.MaxLength
/**
* Validation Rule for String Lengths

View file

@ -1,8 +1,8 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.annotations.MaxLength
import me.naingaungluu.formconductor.annotations.MinLength
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.annotations.MaxLength
import de.thetadev.formconductor.annotations.MinLength
/**
* Validation Rule for String Lengths

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.annotations.OptionalField
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.annotations.OptionalField
/**
* Validation Rule for Optional Fields

View file

@ -1,4 +1,4 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
interface OptionalStateRule<T> {
fun isOptional(state: T): Boolean

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
import me.naingaungluu.formconductor.FieldResult
import de.thetadev.formconductor.FieldResult
interface StateBasedValidationRule<V, A : Annotation, T : Any> : ValidationRule {
fun validate(value: V, options: A, formState: T): FieldResult

View file

@ -1,6 +1,6 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
import me.naingaungluu.formconductor.FieldResult
import de.thetadev.formconductor.FieldResult
/**
* Stateless Validation Rule interface

View file

@ -0,0 +1,3 @@
package de.thetadev.formconductor.validation.rules
interface ValidationRule

View file

@ -1,9 +1,9 @@
package me.naingaungluu.formconductor.validation.rules
package de.thetadev.formconductor.validation.rules
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.annotations.MaxLength
import me.naingaungluu.formconductor.annotations.MinLength
import me.naingaungluu.formconductor.annotations.WebUrl
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.annotations.MaxLength
import de.thetadev.formconductor.annotations.MinLength
import de.thetadev.formconductor.annotations.WebUrl
/**
* Validation Rule for String Lengths

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.validation.validators
package de.thetadev.formconductor.validation.validators
import me.naingaungluu.formconductor.CollectableFormData
import me.naingaungluu.formconductor.FieldResult
import de.thetadev.formconductor.CollectableFormData
import de.thetadev.formconductor.FieldResult
import kotlin.reflect.KProperty1
internal class CollateralFieldValidator<T : Any>(

View file

@ -0,0 +1,7 @@
package de.thetadev.formconductor.validation.validators
import de.thetadev.formconductor.FieldResult
internal interface FieldValidator<V> {
fun validate(input: V): FieldResult
}

View file

@ -1,8 +1,8 @@
package me.naingaungluu.formconductor.validation.validators
package de.thetadev.formconductor.validation.validators
import me.naingaungluu.formconductor.CollectableFormData
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.validation.rules.StateBasedValidationRule
import de.thetadev.formconductor.CollectableFormData
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.validation.rules.StateBasedValidationRule
/**
* This is a wrapper class for a [StateBasedValidationRule] instance.

View file

@ -1,7 +1,7 @@
package me.naingaungluu.formconductor.validation.validators
package de.thetadev.formconductor.validation.validators
import me.naingaungluu.formconductor.FieldResult
import me.naingaungluu.formconductor.validation.rules.StatelessValidationRule
import de.thetadev.formconductor.FieldResult
import de.thetadev.formconductor.validation.rules.StatelessValidationRule
/**
* A wrapper class or proxy that passes the annotation object as options to the validation rule

View file

@ -1,5 +0,0 @@
package me.naingaungluu.formconductor.validation.optionalFlags
interface OptionalFlag {
fun evaluate(): Boolean
}

View file

@ -1,3 +0,0 @@
package me.naingaungluu.formconductor.validation.rules
interface ValidationRule

View file

@ -1,7 +0,0 @@
package me.naingaungluu.formconductor.validation.validators
import me.naingaungluu.formconductor.FieldResult
internal interface FieldValidator<V> {
fun validate(input: V): FieldResult
}

View file

@ -0,0 +1,56 @@
configure<JavaPluginExtension> {
withSourcesJar()
withJavadocJar()
}
configure<PublishingExtension> {
publications.withType<MavenPublication>().configureEach {
group = project.group
version = project.version.toString()
pom {
name = artifactId
description = "Declarative form validation library for Jetpack Compose"
url = "https://code.thetadev.de/ThetaDev/formconductor"
licenses {
license {
name = "MIT"
url = "https://opensource.org/licenses/MIT"
}
}
scm {
connection = "scm:git@code.thetadev.de/ThetaDev/formconductor.git"
url = "https://code.thetadev.de/ThetaDev/formconductor"
}
developers {
developer {
id = "NaingAungLuu"
name = "Naing Aung Luu"
email = "naingaunglu01@gmail.com"
url = "https://github.com/NaingAungLuu"
}
developer {
id = "ThetaDev"
name = "ThetaDev"
url = "https://thetadev.de"
}
}
}
}
repositories {
maven {
name = "ThetaDev"
url = uri("https://code.thetadev.de/api/packages/ThetaDev/maven")
credentials(HttpHeaderCredentials::class) {
name = "Authorization"
value = "token ${System.getenv("FORGEJO_TOKEN")}"
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
}
}