logic for anyRequired

This commit is contained in:
Kevin G Christiano 2020-03-13 15:16:19 -04:00
parent 41656dccad
commit 227248afe0
2 changed files with 35 additions and 8 deletions

View File

@ -10,14 +10,40 @@ import UIKit
public class RuleAnyRequiredModel: RulesProtocol { public class RuleAnyRequiredModel: RulesProtocol {
//--------------------------------------------------
// MARK: - Properties
//--------------------------------------------------
public static var identifier: String = "anyRequired" public static var identifier: String = "anyRequired"
public var type: String = RuleRequiredModel.identifier public var type: String = RuleRequiredModel.identifier
public var fields: [String] public var fields: [String]
//--------------------------------------------------
// MARK: - Methods
//--------------------------------------------------
public func isValid(_ formField: FormFieldProtocol) -> Bool { public func isValid(_ formField: FormFieldProtocol) -> Bool {
guard let value = formField.formFieldValue() else { return false } guard let value = formField.formFieldValue() else { return false }
return true if let valueString = value as? String {
return valueString.count > 0
} else if let valueBool = value as? Bool {
return valueBool
}
return false
}
public func isValid(_ formValidator: FormValidator) -> Bool {
for formKey in fields {
guard let formField = formValidator.formField(for: formKey) else { continue }
if isValid(formField) {
return true
}
}
return false
} }
} }

View File

@ -18,6 +18,7 @@ public protocol RulesProtocol: ModelProtocol {
var fields: [String] { get set } var fields: [String] { get set }
func isValid(_ formValidator: FormValidator) -> Bool func isValid(_ formValidator: FormValidator) -> Bool
func isValid(_ formField: FormFieldProtocol) -> Bool func isValid(_ formField: FormFieldProtocol) -> Bool
// func isValid(_ fieldMolecules: [String: FormFieldProtocol]) -> Bool
func setValid(_ formField: FormFieldProtocol, _ isValid: Bool) func setValid(_ formField: FormFieldProtocol, _ isValid: Bool)
} }
@ -36,22 +37,22 @@ public extension RulesProtocol {
} }
func isValid(_ formValidator: FormValidator) -> Bool { func isValid(_ formValidator: FormValidator) -> Bool {
var valid = true var valid = true
for formKey in fields { for formKey in fields {
guard let formField = formValidator.formField(for: formKey) else { guard let formField = formValidator.formField(for: formKey) else { continue }
continue
}
let fieldValidity = isValid(formField) let fieldValidity = isValid(formField)
setValid(formField, fieldValidity) setValid(formField, fieldValidity)
valid = valid && fieldValidity valid = valid && fieldValidity
} }
return valid return valid
} }
func setValid(_ formField: FormFieldProtocol, _ isValid: Bool) { func setValid(_ formField: FormFieldProtocol, _ isValid: Bool) {
guard let formFieldValid = formField as? ValidProtocol else { guard let formFieldValid = formField as? ValidProtocol else { return }
return
}
formFieldValid.setValidity(isValid) formFieldValid.setValidity(isValid)
} }
} }