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

json.schema.validation.Instance.scala Maven / Gradle / Ivy

package json.schema.validation

import com.github.andyglow.json.Value._
import com.github.andyglow.json.Value
import com.github.andyglow.jsonschema.AsValue
import json.schema.Version.Draft04

sealed abstract class Instance[S, V]()(implicit conv: V => Value) extends Product {

  def name: String = productPrefix

  def :=(x: V): Def[S, V] = Def(this, x, conv(x))
}

object Instance {

  case object `multipleOf` extends Instance[Number, Number]()(num.apply)

  case object `maximum` extends Instance[Number, Number]()(num.apply)

  case object `minimum` extends Instance[Number, Number]()(num.apply)

  case object `exclusiveMaximum` extends Instance[Number, Number]()(num.apply)

  case object `exclusiveMinimum` extends Instance[Number, Number]()(num.apply)

  case object `contentEncoding` extends Instance[String, String]()(str.apply)

  case object `contentMediaType` extends Instance[String, String]()(str.apply)

  case object `contentSchema`
      extends Instance[String, json.Schema[_]]()(
        AsValue.schema(_, Draft04())
      ) // FIXME: shouldn't specify a Version at this level

  case object `maxLength` extends Instance[String, Int]()(num.apply)

  case object `minLength` extends Instance[String, Int]()(num.apply)

  case object `pattern` extends Instance[String, String]()(str.apply)

  case object `maxItems` extends Instance[Iterable[_], Int]()(num.apply)

  case object `minItems` extends Instance[Iterable[_], Int]()(num.apply)

  case object `maxContains` extends Instance[Iterable[_], Int]()(num.apply)

  case object `minContains` extends Instance[Iterable[_], Int]()(num.apply)

  case object `uniqueItems` extends Instance[Iterable[_], Boolean]()(bool.apply)

  case object `maxProperties` extends Instance[Map[_, _], Int]()(num.apply)

  case object `minProperties` extends Instance[Map[_, _], Int]()(num.apply)

  case object `patternProperties` extends Instance[Map[_, _], String]()(str.apply)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy