Compare commits

..
64 changed files with 181 additions and 268 deletions

View file

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

View file

@ -1,10 +1,9 @@
plugins { plugins {
id("com.android.library") id("com.android.library")
alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.compose)
`maven-publish`
} }
android { android {
namespace = "de.thetadev.formconductor.composeui" namespace = "me.naingaungluu.formconductor.composeui"
compileSdk = 37 compileSdk = 37
defaultConfig { defaultConfig {
@ -50,15 +49,3 @@ dependencies {
api(libs.androidx.compose.ui) api(libs.androidx.compose.ui)
api(libs.androidx.compose.runtime) 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 de.thetadev.formconductor.validation.rules.ValidationRule { -keepclassmembers class * extends me.naingaungluu.formconductor.validation.rules.ValidationRule {
<methods>; <methods>;
public static <fields>; public static <fields>;
} }
# Keep classes and properties annotated with @Form # Keep classes and properties annotated with @Form
-if @de.thetadev.formconductor.annotations.Form class ** -if @me.naingaungluu.formconductor.annotations.Form class **
-keepclassmembers,allowobfuscation,allowoptimization class <1> { -keepclassmembers,allowobfuscation,allowoptimization class <1> {
<init>(...); <init>(...);
<fields>; <fields>;
} }
# keep all the classes referenced in the @Form class # keep all the classes referenced in the @Form class
-if @de.thetadev.formconductor.annotations.Form class ** { -if @me.naingaungluu.formconductor.annotations.Form class ** {
** *; ** *;
} }
-keep,allowoptimization,allowshrinking class <1> { -keep,allowoptimization,allowshrinking class <1> {
<init>(...); <init>(...);
<fields>; <fields>;
} }
-keep @de.thetadev.formconductor.annotations.Form class * { *; } -keep @me.naingaungluu.formconductor.annotations.Form class * { *; }
-keep class de.thetadev.formconductor.** { *; } -keep class me.naingaungluu.formconductor.** { *; }
# Keep kotlin.Metadata annotations to maintain metadata on kept items # Keep kotlin.Metadata annotations to maintain metadata on kept items
-keepattributes *Annotation*,Signature,InnerClasses -keepattributes *Annotation*,Signature,InnerClasses

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,6 @@
plugins { plugins {
id("java-library") id("java-library")
alias(libs.plugins.jetbrains.kotlin.jvm) alias(libs.plugins.jetbrains.kotlin.jvm)
`maven-publish`
} }
java { java {
sourceCompatibility = JavaVersion.VERSION_11 sourceCompatibility = JavaVersion.VERSION_11
@ -17,15 +16,3 @@ dependencies {
implementation(libs.kotlin.reflect) implementation(libs.kotlin.reflect)
implementation(libs.kotlinx.coroutines.core) 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,5 +0,0 @@
package de.thetadev.formconductor.validation.optionalFlags
interface OptionalFlag {
fun evaluate(): Boolean
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,56 +0,0 @@
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")
}
}
}
}