I partially refactored the code so okFields
uses the extracted function checkStringLength.
Now I also want problemFields()
to use the same refactored function, but there is a difference between how okFields and problemFields use the function: you see that the problemFields
has a little !
in front of validator
, and I don't know how to have this vary from the same extracted function. How would you avoid the duplicate code?
function stringLengthValidation( mergedModelAndFormFields ) {
let fieldsToValidate = mergedModelAndFormFields.okFields
// extracted function
function checkStringLength() {
return _.pickBy( fieldsToValidate, ( value ) => {
return validator.isLength( value[ 'content' ], {
'min': value[ 'validation' ].minLength,
'max': value[ 'validation' ].maxLength
} )
} )
}
let okFields = checkStringLength()
// I want to replace this with checkStringLength()
let problemFields = _.pickBy( fieldsToValidate, ( value ) => {
// see the '!' here that is the variation
return !validator.isLength( value[ 'content' ], {
'min': value[ 'validation' ].minLength,
'max': value[ 'validation' ].maxLength
} )
} )
return {
'okFields' : okFields,
'problemFields': problemFields
}
}