- DocumentID: and
  Title: >+
    `and`
  CategoryID: commands
  Summary: >-
    Returns `true` or `false` depending on whether multiple conditions are met
  Description: |-
    Returns a boolean results (`true` or `false`) depending on whether all of the
    code-blocks included as parameters are successful or not.
  Usage: |-
    ```
    and: { code-block } { code-block } -> <stdout>

    !and: { code-block } { code-block } -> <stdout>
    ```

    `and` supports as many or as few code-blocks as you wish.
  Examples: |-
    ```
    if { and { = 1+1==2 } { = 2+2==4 } { = 3+3==6 } } then {
        out: The laws of mathematics still exist in this universe.
    }
    ```
  Flags:
  Detail: |-
    `and` does not set the exit number on failure so it is safe to use inside a `try`
    or `trypipe` block.

    If `and` is prefixed by a bang then it returns `true` only when all code-blocks
    are unsuccessful.

    ### Code-Block Testing

    * `and` tests all code-blocks up until one of the code-blocks is unsuccessful,
      then `and` exits and returns `false`.

    * `!and` tests all code-blocks up until one of the code-blocks is successful,
      then `!and` exits and returns `false` (ie `!and` is `not`ing every code-block).
  Synonyms:
  - and
  - "!and"
  Related:
  - or
  - if
  - try
  - trypipe
  - catch
  - "not"
  - "true"
  - "false"


- DocumentID: or
  Title: >+
    `or`
  CategoryID: commands
  Summary: >-
    Returns `true` or `false` depending on whether one code-block out of multiple
    ones supplied is successful or unsuccessful.
  Description: |-
    Returns a boolean results (`true` or `false`) depending on whether any of the
    code-blocks included as parameters are successful or not.
  Usage: |-
    ```
    or: { code-block } { code-block } -> <stdout>

    !or: { code-block } { code-block } -> <stdout>
    ```

    `or` supports as many or as few code-blocks as you wish.
  Examples: |-
    ```
    if { or { = 1+1==2 } { = 2+2==5 } { = 3+3==6 } } then {
        out: At least one of those equations are correct
    }
    ```
  Flags:
  Detail: |-
    `or` does not set the exit number on failure so it is safe to use inside a `try`
    or `trypipe` block.

    If `or` is prefixed by a bang (`!or`) then it returns `true` when one or more
    code-blocks are unsuccessful (ie the opposite of `or`).

    ### Code-Block Testing

    * `or` only executes code-blocks up until one of the code-blocks is successful
      then it exits the function and returns `true`.

    * `!or` only executes code-blocks while the code-blocks are successful. Once one
      is unsuccessful `!or` exits and returns `true` (ie it `not`s every code-block).
  Synonyms:
  - or
  - "!or"
  Related:
  - and
  - if
  - try
  - trypipe
  - catch
  - "not"
  - "true"
  - "false"