pub mod engine;
pub mod priority;
pub mod result;
pub mod rules;
pub use engine::ValidationEngine;
pub use priority::Priority;
pub use result::{PartialValidationResult, ValidationResult, ValidationSummary};
pub trait Validator: Send + Sync {
fn validate(&self, input: &str) -> ValidationResult;
fn partial_validate(&self, input: &str, cursor_pos: usize) -> PartialValidationResult;
fn priority(&self) -> Priority;
fn name(&self) -> &str;
fn description(&self) -> &str {
self.name()
}
}
#[derive(Debug, Clone)]
pub struct ValidationRuleConfig {
pub validator_type: ValidatorType,
pub priority: Option<Priority>,
pub custom_message: Option<String>,
pub parameters: std::collections::HashMap<String, String>,
}
#[derive(Debug, Clone)]
pub enum ValidatorType {
Required,
MinLength(usize),
MaxLength(usize),
Pattern(String),
Email,
Hostname,
Url,
Ipv4,
Ipv6,
Integer,
Float,
Range(f64, f64),
Positive,
Negative,
Date(Option<String>),
Time(Option<String>),
DateTime(Option<String>),
Choices(Vec<String>),
FileExists,
DirExists,
PathExists,
Readable,
Writable,
Executable,
}