TextValidator.gd 556 B

123456789101112131415161718
  1. class_name TextValidator
  2. extends Node
  3. const valid_chars := "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-*!.^/+:,'()?_;<> \n"
  4. @export var node_to_validate: Control = null
  5. const FONT = preload("uid://cd221873lbtj1")
  6. signal text_validated(new_text: String)
  7. func validate_text() -> void:
  8. var idx := 0
  9. var text = node_to_validate.text.to_upper()
  10. node_to_validate.clear()
  11. for i in text:
  12. if FONT.has_char(text.unicode_at(idx)) == false and valid_chars.contains(i) == false:
  13. text = text.replace(i, " ")
  14. idx += 1
  15. node_to_validate.insert_text_at_caret(text)