sbt.OptionSyntax.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of main_2.12 Show documentation
Show all versions of main_2.12 Show documentation
sbt is an interactive build tool
The newest version!
/*
* sbt
* Copyright 2023, Scala center
* Copyright 2011 - 2022, Lightbend, Inc.
* Copyright 2008 - 2010, Mark Harrah
* Licensed under Apache License 2.0 (see LICENSE)
*/
package sbt
import java.util.Optional
// Todo: port this back to Zinc in place of JavaInterfaceUtil.
trait OptionSyntax {
import OptionSyntax._
implicit def sbtOptionSyntaxRichOptional[A](optional: Optional[A]): RichOptional[A] =
new RichOptional[A](optional)
implicit def sbtOptionSyntaxRichOption[A](option: Option[A]): RichOption[A] =
new RichOption[A](option)
implicit def sbtOptionSyntaxOptionIdOps[A](a: A): OptionIdOps[A] =
new OptionIdOps[A](a)
final def none[A]: Option[A] = None
}
object OptionSyntax extends OptionSyntax {
/** Injects some method. */
final class OptionIdOps[A](val a: A) extends AnyVal {
def some: Option[A] = Some(a)
}
/** Injects asScala method. */
final class RichOptional[A](val optional: Optional[A]) extends AnyVal {
def asScala: Option[A] =
if (!optional.isPresent) None
else Some(optional.get())
}
/** Injects asJava method. */
final class RichOption[A](val option: Option[A]) extends AnyVal {
def asJava: Optional[A] = option match {
case Some(value) => Optional.of(value)
case None => Optional.empty[A]
}
}
}