def simplify()

in atlas-core/src/main/scala/com/netflix/atlas/core/model/Query.scala [218:240]


  def simplify(query: Query, ignore: Boolean = false): Query = {
    val newQuery = query match {
      case Query.And(Query.True, q)  => simplify(q, ignore)
      case Query.And(q, Query.True)  => simplify(q, ignore)
      case Query.And(Query.False, _) => Query.False
      case Query.And(_, Query.False) => Query.False
      case Query.And(q1, q2)         => Query.And(simplify(q1, ignore), simplify(q2, ignore))

      case Query.Or(Query.True, _)  => Query.True
      case Query.Or(_, Query.True)  => Query.True
      case Query.Or(Query.False, q) => simplify(q, ignore)
      case Query.Or(q, Query.False) => simplify(q, ignore)
      case Query.Or(q1, q2)         => Query.Or(simplify(q1, ignore), simplify(q2, ignore))

      case Query.Not(Query.True)  => if (ignore) Query.True else Query.False
      case Query.Not(Query.False) => Query.True
      case Query.Not(q)           => Query.Not(simplify(q, ignore))

      case q => q
    }

    if (newQuery != query) simplify(newQuery, ignore) else newQuery
  }