code review

This commit is contained in:
Suresh, Kamlesh 2021-03-30 12:12:12 -04:00
parent 2e75f8638c
commit 766ba93499
6 changed files with 22 additions and 24 deletions

View File

@ -99,10 +99,10 @@ import MVMCore
var previousValidity: [String: Bool] = [:] var previousValidity: [String: Bool] = [:]
for rule in group.rules { for rule in group.rules {
let tuple = rule.validate(fields, previousValidity) let tuple = rule.validate(fields, previousValidity)
let temp = tuple.0 let isValidRule = tuple.valid
let returnedValidity = tuple.1 let returnedValidity = tuple.fieldValidity
previousValidity = previousValidity.merging(returnedValidity) { (_, new) in new } previousValidity = previousValidity.merging(returnedValidity) { (_, new) in new }
valid = valid && temp valid = valid && isValidRule
} }
// Notify the group watchers of validity. // Notify the group watchers of validity.

View File

@ -36,7 +36,7 @@ public class RuleAnyRequiredModel: RulesProtocol {
return false return false
} }
public func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidiity: [String: Bool]) -> (Bool, [String: Bool]) { public func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidity: [String: Bool]) -> (valid: Bool, fieldValidity: [String: Bool]) {
var previousValidity: [String: Bool] = [:] var previousValidity: [String: Bool] = [:]
for formKey in fields { for formKey in fields {
@ -44,7 +44,7 @@ public class RuleAnyRequiredModel: RulesProtocol {
var fieldValidity = isValid(formField) var fieldValidity = isValid(formField)
// If past rule is invalid forr a field, the current rule should not flip the validity of a field // If past rule is invalid forr a field, the current rule should not flip the validity of a field
if let validity = previousFieldValidiity[formKey], !validity, fieldValidity { if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
fieldValidity = false fieldValidity = false
} }
@ -53,6 +53,6 @@ public class RuleAnyRequiredModel: RulesProtocol {
} }
previousValidity[formKey] = false previousValidity[formKey] = false
} }
return (false, previousValidity) return (valid: false, fieldValidity: previousValidity)
} }
} }

View File

@ -27,13 +27,13 @@ public class RuleAnyValueChangedModel: RulesProtocol {
return formField.baseValue != formField.formFieldValue() return formField.baseValue != formField.formFieldValue()
} }
public func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidiity: [String: Bool]) -> (Bool, [String: Bool]) { public func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidity: [String: Bool]) -> (valid: Bool, fieldValidity: [String: Bool]) {
var previousValidity: [String: Bool] = [:] var previousValidity: [String: Bool] = [:]
for formKey in fields { for formKey in fields {
guard let formField = fieldMolecules[formKey] else { continue } guard let formField = fieldMolecules[formKey] else { continue }
var fieldValidity = isValid(formField) var fieldValidity = isValid(formField)
// If past rule is invalid forr a field, the current rule should not flip the validity of a field // If past rule is invalid forr a field, the current rule should not flip the validity of a field
if let validity = previousFieldValidiity[formKey], !validity, fieldValidity { if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
fieldValidity = false fieldValidity = false
} }
@ -41,7 +41,7 @@ public class RuleAnyValueChangedModel: RulesProtocol {
return (true, previousValidity) return (true, previousValidity)
} }
previousValidity[formKey] = false previousValidity[formKey] = false
} }
return (false, previousValidity) return (valid: false, fieldValidity: previousValidity)
} }
} }

View File

@ -27,7 +27,7 @@ public class RuleEqualsIgnoreCaseModel: RulesProtocol {
return false return false
} }
public func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidiity: [String: Bool]) -> (Bool, [String: Bool]) { public func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidity: [String: Bool]) -> (valid: Bool, fieldValidity: [String: Bool]) {
var valid = false var valid = false
var compareText: String? var compareText: String?
@ -46,7 +46,7 @@ public class RuleEqualsIgnoreCaseModel: RulesProtocol {
var fieldValidity = valid var fieldValidity = valid
// If past rule is invalid forr a field, the current rule should not flip the validity of a field // If past rule is invalid forr a field, the current rule should not flip the validity of a field
if let validity = previousFieldValidiity[formKey], !validity, fieldValidity { if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
fieldValidity = false fieldValidity = false
} }
@ -60,7 +60,6 @@ public class RuleEqualsIgnoreCaseModel: RulesProtocol {
previousValidity[formKey] = valid previousValidity[formKey] = valid
(formField as? FormRuleWatcherFieldProtocol)?.setValidity(valid, rule: self) (formField as? FormRuleWatcherFieldProtocol)?.setValidity(valid, rule: self)
} }
return (valid: valid, fieldValidity: previousValidity)
return (valid, previousValidity)
} }
} }

View File

@ -27,7 +27,7 @@ public class RuleEqualsModel: RulesProtocol {
return false return false
} }
public func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidiity: [String: Bool]) -> (Bool, [String: Bool]) { public func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidity: [String: Bool]) -> (valid: Bool, fieldValidity: [String: Bool]) {
var valid = true var valid = true
var compareValue: AnyHashable? var compareValue: AnyHashable?
var previousValidity: [String: Bool] = [:] var previousValidity: [String: Bool] = [:]
@ -48,13 +48,12 @@ public class RuleEqualsModel: RulesProtocol {
} else { } else {
var fieldValidity = valid var fieldValidity = valid
// If past rule is invalid forr a field, the current rule should not flip the validity of a field // If past rule is invalid forr a field, the current rule should not flip the validity of a field
if let validity = previousFieldValidiity[formKey], !validity, fieldValidity { if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
fieldValidity = false fieldValidity = false
} }
(formField as? FormRuleWatcherFieldProtocol)?.setValidity(fieldValidity, rule: self) (formField as? FormRuleWatcherFieldProtocol)?.setValidity(fieldValidity, rule: self)
} }
} }
return (valid: valid, fieldValidity: previousValidity)
return (valid, previousValidity)
} }
} }

View File

@ -26,7 +26,7 @@ public protocol RulesProtocol: ModelProtocol {
func isValid(_ formField: FormFieldProtocol) -> Bool func isValid(_ formField: FormFieldProtocol) -> Bool
// Validates the rule and returns the result. // Validates the rule and returns the result.
func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidiity: [String: Bool]) -> (Bool, [String: Bool]) func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidity: [String: Bool]) -> (valid: Bool, fieldValidity: [String: Bool])
} }
public extension RulesProtocol { public extension RulesProtocol {
@ -38,21 +38,21 @@ public extension RulesProtocol {
static var categoryName: String { "\(RulesProtocol.self)" } static var categoryName: String { "\(RulesProtocol.self)" }
// Individual rule can override the function to validate based on the rule type. // Individual rule can override the function to validate based on the rule type.
func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidiity: [String: Bool]) -> (Bool, [String: Bool]) { func validate(_ fieldMolecules: [String: FormFieldProtocol],_ previousFieldValidity: [String: Bool]) -> (valid: Bool, fieldValidity: [String: Bool]) {
var valid = true var valid = true
var previousValidity: [String: Bool] = [:] var previousValidity: [String: Bool] = [:]
for formKey in fields { for formKey in fields {
guard let formField = fieldMolecules[formKey] else { continue } guard let formField = fieldMolecules[formKey] else { continue }
var fieldValidity = isValid(formField) var fieldValidity = isValid(formField)
// If past rule is invalid forr a field, the current rule should not flip the validity of a field // If past rule is invalid for a field, the current rule should not flip the validity of a field
if let validity = previousFieldValidiity[formKey], !validity, fieldValidity { if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
fieldValidity = false fieldValidity = false
} }
(formField as? FormRuleWatcherFieldProtocol)?.setValidity(fieldValidity, rule: self) (formField as? FormRuleWatcherFieldProtocol)?.setValidity(fieldValidity, rule: self)
valid = valid && fieldValidity valid = valid && fieldValidity
previousValidity[formKey] = fieldValidity previousValidity[formKey] = fieldValidity
} }
return (valid, previousValidity) return (valid: valid, fieldValidity: previousValidity)
} }
} }