All Downloads are FREE. Search and download functionalities are using the official Maven repository.

inputvalidator.MapValidator.scala Maven / Gradle / Ivy

package inputvalidator

case class MapValidator(map: Map[String, Any] = Map(), override val results: Results = Results(Map(), Nil)) extends ValidatorLike {

  override lazy val inputs: Inputs = InputsFromMap(map)

  def apply(results: NotYet*): MapValidator = {

    val mutableMap = collection.mutable.Map(map.toSeq: _*)

    val newResultSeq = results.toSeq ++ results.map {

      case NotYet(k: KeyInput, validations) =>
        if (!mutableMap.contains(k.key)) {
          mutableMap.update(k.key, extractValue(map.get(k.key)))
        }
        validations.apply(KeyValueInput(k.key, extractValue(map.get(k.key))))

      case NotYet(kv: KeyValueInput, validations) =>
        if (!mutableMap.contains(kv.key)) {
          mutableMap.update(kv.key, kv.value)
        }
        validations.apply(KeyValueInput(kv.key, extractValue(kv.value)))

      case done => done

    }

    val newMap = Map(mutableMap.toSeq: _*)
    MapValidator(newMap, Results(newMap, newResultSeq))

  }

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy