diff --git a/README.adoc b/README.adoc deleted file mode 100644 index 5eadee4..0000000 --- a/README.adoc +++ /dev/null @@ -1,337 +0,0 @@ -# Conditional - -image:https://img.shields.io/github/release/kemitix/conditional.svg["Releases", link="https://github.com/kemitix/conditional/releases"] -image:https://api.codacy.com/project/badge/Grade/1188742d676e457da91415d2b3a5faf1["Codacy code quality", link="https://www.codacy.com/app/kemitix/conditional"] -image:https://travis-ci.org/kemitix/conditional.svg?branch=master["Build Status", link="https://travis-ci.org/kemitix/conditional"] -image:https://coveralls.io/repos/github/kemitix/conditional/badge.svg?branch=master["Coverage Status", link="https://coveralls.io/github/kemitix/conditional?branch=master"] - -* link:#condition[Condition] -* link:#value[Value] - -## Condition - -If-then-else in a functional-style. - -### if-then - -[[source,java]] ----- -if (isTrue()) { - doSomething(); -} ----- - -[[source,java]] ----- -Condition.where(isTrue()) - .then(() -> doSomething()); ----- - -### if-then-else - -[[source,java]] ----- -if (isTrue()) { - doSomething(); -} else { - doSomethingElse(); -} ----- - -[[source,java]] ----- -Condition.where(isTrue()) - .then(() -> doSomething()) - .otherwise(() -> doSomethingElse()); ----- - -### if-and-then-else - -[[source,java]] ----- -if (isTrue() && isAlsoTrue()) { - doSomething(); -} else { - doSomethingElse(); -} ----- - -[[source,java]] ----- -Condition.where(isTrue()) - .and(() -> isAlsoTrue()) - .then(() -> doSomething()) - .otherwise(() -> doSomethingElse()); ----- - -### if-or-then-else - -[[source,java]] ----- -if (isTrue() || alternativeIsTrue()) { - doSomething(); -} else { - doSomethingElse(); -} ----- - -[[source,java]] ----- -Condition.where(isTrue()) - .or(() -> alternativeIsTrue()) - .then(() -> doSomething()) - .otherwise(() -> doSomethingElse()); ----- - -### if-not-then-else - -[[source,java]] ----- -if (!isFalse()) { - doSomething(); -} else { - doSomethingElse(); -} ----- - -[[source,java]] ----- -Condition.whereNot(isFalse()) - .then(() -> doSomething()) - .otherwise(() -> doSomethingElse()); ----- - -### if-and-not-then-else - -[[source,java]] ----- -if (isTrue() || !isFalse()) { - doSomething(); -} else { - doSomethingElse(); -} ----- - -[[source,java]] ----- -Condition.where(isTrue()) - .andNot(() -> isFalse()) - .then(() -> doSomething()) - .otherwise(() -> doSomethingElse()); ----- - -### if-or-not-then-else - -[[source,java]] ----- -if (isFalse() || !isAlsoFalse()) { - doSomething(); -} else { - doSomethingElse(); -} ----- - -[[source,java]] ----- -Condition.where(isFalse()) - .orNot(() -> isAlsoFalse()) - .then(() -> doSomething()) - .otherwise(() -> doSomethingElse()); ----- - -### if-then-else-if - -[[source,java]] ----- -if (isFalse()) { - doSomething(); -} else if (isTrue()) { - doSomethingElse(); -} ----- - -[[source,java]] ----- -Condition.where(isFalse()) - .then(() -> doSomething()) - .otherwise(() -> isTrue()) - .then(() -> doSomethingElse()); ----- - -### if-then-if-then - -[[source,java]] ----- -if (isTrue()) { - doSomething(); - if (isAlsoTrue()) { - doSomethingElse(); - } -} ----- - -[[source,java]] ----- -Condition.where(isTrue()) - .then(() -> doSomething()) - .and(() -> isAlsoTrue()) - .then(() -> doSomethingElse()); ----- - -## Value - -Values from an if-then-else in a functional-style. - -Functional, and verbose, alternative to the ternary operator (`?:`). - -### if-then-else - -[[source,java]] ----- -String result; -if (isTrue()) { - result = TRUE; -} else { - result = FALSE; -} ----- - -[[source,java]] ----- -String result = isTrue() ? TRUE : FALSE; ----- - -[[source,java]] ----- -final String result = Value.where(isTrue(), () -> TRUE, () -> FALSE); ----- - -[[source,java]] ----- -final Optional result = Value.where(isTrue(), () -> TRUE); ----- - -[[source,java]] ----- -final String result = Value.where(isTrue()) - .then(() -> TRUE) - .otherwise(() -> FALSE); ----- - -### if-not-then-else - -[[source,java]] ----- -String result; -if (!isTrue()) { - result = TRUE; -} else { - result = FALSE; -} ----- - -[[source,java]] ----- -final String result = Value.whereNot(isTrue()) - .then(() -> TRUE) - .otherwise(() -> FALSE); ----- - -### if-and-then-else - -[[source,java]] ----- -String result; -if (isTrue() && alternativeIsTrue()) { - result = TRUE; -} else { - result = FALSE; -} ----- - -[[source,java]] ----- -final String result = Value.where(isTrue()) - .and(() -> alternativeIsTrue()) - .then(() -> TRUE) - .otherwise(() -> FALSE); ----- - -### if-and-not-then-else - -[[source,java]] ----- -String result; -if (isTrue() && !alternativeIsFalse()) { - result = TRUE; -} else { - result = FALSE; -} ----- - -[[source,java]] ----- -final String result = Value.where(isTrue()) - .andNot(() -> alternativeIsFalse()) - .then(() -> TRUE) - .otherwise(() -> FALSE); ----- - -### if-or-then-else - -[[source,java]] ----- -String result; -if (isTrue() || alternativeIsTrue()) { - result = TRUE; -} else { - result = FALSE; -} ----- - -[[source,java]] ----- -final String result = Value.where(isTrue()) - .or(() -> alternativeIsTrue()) - .then(() -> TRUE) - .otherwise(() -> FALSE); ----- - -### if-or-not-then-else - -[[source,java]] ----- -String result; -if (isTrue() || !isFalse()) { - result = TRUE; -} else { - result = FALSE; -} ----- - -[[source,java]] ----- -final String result = Value.where(isTrue()) - .orNot(() -> isFalse()) - .then(() -> TRUE) - .otherwise(() -> FALSE); ----- - -### if-then - -[[source,java]] ------ -Optional result; -if (isTrue()) { - result = Optional.of(TRUE); -} else { - result = Optional.empty(); -} ------ - -[[source,java]] ------ -final Optional result = Value.where(isTrue()) - .then(() -> TRUE) - .optional(); ------ diff --git a/README.org b/README.org new file mode 100644 index 0000000..3cc00e8 --- /dev/null +++ b/README.org @@ -0,0 +1,313 @@ +* Conditional + +** Functional Condition and Value. + + [[https://oss.sonatype.org/content/repositories/releases/net/kemitix/conditional][file:https://img.shields.io/nexus/r/https/oss.sonatype.org/net.kemitix/conditional.svg?style=for-the-badge]] + [[https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22net.kemitix%22%20AND%20a%3A%22conditional%22][file:https://img.shields.io/maven-central/v/net.kemitix/conditional.svg?style=for-the-badge]] + + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://img.shields.io/sonar/https/sonarcloud.io/net.kemitix%3Aconditional/coverage.svg?style=for-the-badge#.svg]] + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://img.shields.io/sonar/https/sonarcloud.io/net.kemitix%3Aconditional/tech_debt.svg?style=for-the-badge#.svg]] + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://sonarcloud.io/api/project_badges/measure?project=net.kemitix%3Aconditional&metric=sqale_rating#.svg]] + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://sonarcloud.io/api/project_badges/measure?project=net.kemitix%3Aconditional&metric=alert_status#.svg]] + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://sonarcloud.io/api/project_badges/measure?project=net.kemitix%3Aconditional&metric=reliability_rating#.svg]] + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://sonarcloud.io/api/project_badges/measure?project=net.kemitix%3Aconditional&metric=security_rating#.svg]] + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://sonarcloud.io/api/project_badges/measure?project=net.kemitix%3Aconditional&metric=sqale_index#.svg]] + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://sonarcloud.io/api/project_badges/measure?project=net.kemitix%3Aconditional&metric=vulnerabilities#.svg]] + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://sonarcloud.io/api/project_badges/measure?project=net.kemitix%3Aconditional&metric=bugs#.svg]] + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://sonarcloud.io/api/project_badges/measure?project=net.kemitix%3Aconditional&metric=code_smells#.svg]] + [[https://sonarcloud.io/dashboard?id=net.kemitix%3Aconditional][file:https://sonarcloud.io/api/project_badges/measure?project=net.kemitix%3Aconditional&metric=ncloc#.svg]] + + [[https://app.codacy.com/project/kemitix/conditional/dashboard][file:https://img.shields.io/codacy/grade/1188742d676e457da91415d2b3a5faf1.svg?style=for-the-badge]] + [[http://i.jpeek.org/net.kemitix/conditional/index.html][file:http://i.jpeek.org/net.kemitix/conditional/badge.svg]] + + +** Maven + + #+BEGIN_SRC xml + + net.kemitix + conditional + RELEASE + + #+END_SRC + + The latest version should be shown above with the nexus and maven-central + badges or can be found on [[https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22net.kemitix%22%20AND%20a%3A%22mon%22][Maven Central]]. + + +** Condition + + The `if ... then` and `if ... then ... else` constructs can't be used in a + lambda without being wrapped in a code block. + + Using `Condition` allows the use of an if-style expression without needing to + wrap it in a code block + + +*** if-then + + #+BEGIN_SRC java + if (isTrue()) { + doSomething(); + } + + Condition.where(isTrue()) + .then(() -> doSomething()); + #+END_SRC + + +*** if-then-else + + #+BEGIN_SRC java + if (isTrue()) { + doSomething(); + } else { + doSomethingElse(); + } + + Condition.where(isTrue()) + .then(() -> doSomething()) + .otherwise(() -> doSomethingElse()); + #+END_SRC + + +*** if-and-then-else + + #+BEGIN_SRC java + if (isTrue() && isAlsoTrue()) { + doSomething(); + } else { + doSomethingElse(); + } + + Condition.where(isTrue()) + .and(() -> isAlsoTrue()) + .then(() -> doSomething()) + .otherwise(() -> doSomethingElse()); + #+END_SRC + + +*** if-or-then-else + + #+BEGIN_SRC java + if (isTrue() || alternativeIsTrue()) { + doSomething(); + } else { + doSomethingElse(); + } + + Condition.where(isTrue()) + .or(() -> alternativeIsTrue()) + .then(() -> doSomething()) + .otherwise(() -> doSomethingElse()); + #+END_SRC + + +*** if-not-then-else + + #+BEGIN_SRC java + if (!isFalse()) { + doSomething(); + } else { + doSomethingElse(); + } + + Condition.whereNot(isFalse()) + .then(() -> doSomething()) + .otherwise(() -> doSomethingElse()); + #+END_SRC + + +*** if-and-not-then-else + + #+BEGIN_SRC java + if (isTrue() || !isFalse()) { + doSomething(); + } else { + doSomethingElse(); + } + + Condition.where(isTrue()) + .andNot(() -> isFalse()) + .then(() -> doSomething()) + .otherwise(() -> doSomethingElse()); + #+END_SRC + + +*** if-or-not-then-else + + #+BEGIN_SRC java + if (isFalse() || !isAlsoFalse()) { + doSomething(); + } else { + doSomethingElse(); + } + + Condition.where(isFalse()) + .orNot(() -> isAlsoFalse()) + .then(() -> doSomething()) + .otherwise(() -> doSomethingElse()); + #+END_SRC + + +*** if-then-else-if + + #+BEGIN_SRC java + if (isFalse()) { + doSomething(); + } else if (isTrue()) { + doSomethingElse(); + } + + Condition.where(isFalse()) + .then(() -> doSomething()) + .otherwise(() -> isTrue()) + .then(() -> doSomethingElse()); + #+END_SRC + + +*** if-then-if-then + + #+BEGIN_SRC java + if (isTrue()) { + doSomething(); + if (isAlsoTrue()) { + doSomethingElse(); + } + } + + Condition.where(isTrue()) + .then(() -> doSomething()) + .and(() -> isAlsoTrue()) + .then(() -> doSomethingElse()); + #+END_SRC + + +** Value + + Values from an if-then-else in a functional-style. + + Functional, and verbose, alternative to the ternary operator (=?:=). + + +*** if-then-else + + #+BEGIN_SRC java + String result; + if (isTrue()) { + result = TRUE; + } else { + result = FALSE; + } + + String result = isTrue() ? TRUE : FALSE; + + final String result = Value.where(isTrue(), () -> TRUE, () -> FALSE); + + final Optional result = Value.where(isTrue(), () -> TRUE); + + final String result = Value.where(isTrue()) + .then(() -> TRUE) + .otherwise(() -> FALSE); + #+END_SRC + + +*** if-not-then-else + + #+BEGIN_SRC java + String result; + if (!isTrue()) { + result = TRUE; + } else { + result = FALSE; + } + + final String result = Value.whereNot(isTrue()) + .then(() -> TRUE) + .otherwise(() -> FALSE); + #+END_SRC + + +*** if-and-then-else + + #+BEGIN_SRC java + String result; + if (isTrue() && alternativeIsTrue()) { + result = TRUE; + } else { + result = FALSE; + } + + final String result = Value.where(isTrue()) + .and(() -> alternativeIsTrue()) + .then(() -> TRUE) + .otherwise(() -> FALSE); + #+END_SRC + + +*** if-and-not-then-else + + #+BEGIN_SRC java + String result; + if (isTrue() && !alternativeIsFalse()) { + result = TRUE; + } else { + result = FALSE; + } + + final String result = Value.where(isTrue()) + .andNot(() -> alternativeIsFalse()) + .then(() -> TRUE) + .otherwise(() -> FALSE); + #+END_SRC + + +*** if-or-then-else + + #+BEGIN_SRC java + String result; + if (isTrue() || alternativeIsTrue()) { + result = TRUE; + } else { + result = FALSE; + } + + final String result = Value.where(isTrue()) + .or(() -> alternativeIsTrue()) + .then(() -> TRUE) + .otherwise(() -> FALSE); + #+END_SRC + + +*** if-or-not-then-else + + #+BEGIN_SRC java + String result; + if (isTrue() || !isFalse()) { + result = TRUE; + } else { + result = FALSE; + } + + final String result = Value.where(isTrue()) + .orNot(() -> isFalse()) + .then(() -> TRUE) + .otherwise(() -> FALSE); + #+END_SRC + + +*** if-then + + #+BEGIN_SRC java + Optional result; + if (isTrue()) { + result = Optional.of(TRUE); + } else { + result = Optional.empty(); + } + + final Optional result = Value.where(isTrue()) + .then(() -> TRUE) + .optional(); + #+END_SRC +