
.13.e.source-code.boolean.scala Maven / Gradle / Ivy
/*
Copyright 2010 Aaron J. Radke
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package cc.drx
final class DrxBoolean(val a:Boolean) extends AnyVal{
def ?[A](yes: => A):Option[A] = if(a) Some(yes) else None //TODO switch this to a question mark..
def option[A](yes: => A):Option[A] = ?(yes)
def toStringOnOff = if(a) "on" else "off"
@deprecated("this notation is too magical, use bool.getOrElse(yesValue,noValue)..","v0.2.15") //TODO use a different name
def apply[A](yes: => A, no: => A):A = if(a) yes else no
def getOrElse[A](yes: => A, no: => A):A = if(a) yes else no
@deprecated("this notation is too magical, use the explcit bool.option{yesValue} instead","v0.2.15") //TODO use a different name
def apply[A](yes: => A):Option[A] = ?(yes)
def not = !a //toggle
def and(b:Boolean) = a && b //both true
def or(b:Boolean) = a || b //either are true
def nand(b:Boolean) = !(a && b) //none or one are true
def xnor(b:Boolean) = a == b //both are the same
def nor(b:Boolean) = !(a || b) //only if a and b are false
def bothFalse(b:Boolean) = this nor b //a nor b
def xor(b:Boolean) = a != b //same as (a != b)
def +(b:Boolean) = a != b
def toggle(b:Boolean) = a != b
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy