If / Else

It's possible to use if and else to determine what elements to render.

Example:

if true
    text "It's true!"
    
if value > 10
    text "Larger than ten"
else if value > 5
    text "Larger than five but less than ten"
else
    text "It's a small value..."

Conditional theming

Changing colors and style depending on a condition can be achieved by declaring a constant. All constants are global.

let THEME = {
    enabled: { bg: "grey" },
    disabled: { bg: "reset" },
}

text [background: THEME["disabled"].bg] "Hello"

Since boolean values can translate to numbers it's also possible to use them as index lookups.

let THEME = [
    // False
    { bg: "grey" },
    // True
    { bg: "reset" },
]

text [background: THEME[state.some_bool].bg] "Hello, tea"

Operators

  • Equality ==
  • Greater than >
  • Greater than or equals >=
  • Less than <
  • Less than or equals <=
  • And &&
  • Or ||
  • Addition +
  • Subtraction -
  • Multiplication *
  • Division /
  • Remainder (Modulo) %
  • Negation !
  • Either ? (Uses the right value if the left value does not exist)

Note: just like for-loops it's not possible to use if / else with attributes.

To determine the value of an attribute depending on some condition this should be handled by the state.