aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/utils/Implicits.scala
blob: 9411bebae679e3087d4b9dacc1075e97e7dbb4e8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package xyz.driver.pdsuicommon.utils

import play.api.libs.json.JsResult
import xyz.driver.pdsuicommon.json.JsResultOps

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)

  implicit def toCharOps(self: Char): CharOps                      = new CharOps(self)
  implicit def toStringOps(self: String): StringOps                = new StringOps(self)
  implicit def toJsResultOps[T](self: JsResult[T]): JsResultOps[T] = new JsResultOps(self)
}