aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/common/utils/Implicits.scala
blob: bdccaac377ac8118df0c6489d3c29cd7eb60cd60 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package xyz.driver.common.utils

import scala.collection.generic.CanBuildFrom

object Implicits {

  final class ConditionalAppend[U, T[U] <: TraversableOnce[U]](val c: T[U]) extends AnyVal {
    def condAppend(cond: => Boolean, value: U)(implicit cbf: CanBuildFrom[T[U], U, T[U]]): T[U] = {
      val col = cbf()
      if (cond) {
        ((col ++= c) += value).result
      } else {
        c.asInstanceOf[T[U]]
      }
    }
  }

  implicit def traversableConditionalAppend[U, T[U] <: TraversableOnce[U]](c: T[U]): ConditionalAppend[U, T] =
    new ConditionalAppend[U, T](c)

  implicit def toMapOps[K, V](x: Map[K, V]): MapOps[K, V] = new MapOps(x)
}