Files
Kalulu/addons/godot-form-validator/validators/validator.gd
T
2025-05-15 09:27:38 +02:00

38 lines
853 B
GDScript

@tool
extends Resource
class_name Validator
@export var validation_order: int = 1
@export var validation_method: Validation.Method = Validation.Method.BATCH
@export var skip_validation: bool = false
@export var rules: Array[ValidatorRule] = []
var _messages: PackedStringArray = PackedStringArray()
func get_value(control: Control) -> Variant:
return null
func is_type(node) -> bool:
return node is Control
func get_messages() -> PackedStringArray:
return _messages
func validate(control: Control) -> bool:
_messages.clear()
var valid = true
for rule in rules:
var result = rule.apply(control, get_value(control))
if not result.passed:
_messages.append(result.message)
valid = valid and result.passed
if not valid:
# Not BATCH, exit early.
if validation_method != Validation.Method.BATCH:
return valid
return valid