Sentinel
Language: Conditionals
Conditional statements allow your policy to behave differently depending on a condition.
Conditional statements may only appear outside of rule expressions, such as in functions or in the global scope of a policy. This is because rules are only allowed to contain a single boolean expression.
If Statements
if statements only execute their bodies if a condition is met.
The syntax of an if statement is:
if condition {
  // ... this is executed if condition is true
}
The condition must result in a boolean, such as by calling a function
or evaluating a boolean expression. If
the condition is true, the body (within the {}) is executed. Otherwise,
the body is skipped.
Examples:
// This would execute the body
value = 12
if value is 18 {
    print("condition met")
}
// Direct boolean values can be used
value = true
if value {
    print("condition met")
}
// This would not execute the body since the boolean expression will
// result in undefined.
value = {}
if value["key"] > 12 {
    print("condition met")
}
Else, Else If
An else clause can be given to an if statement to execute a body
in the case the condition is not met. By putting another if statement
directly after the else, multiple conditions can be tested for.
The syntax is:
if condition {
    // ...
} else {
    // ...
}
if condition {
    // ...
} else if other_condition {
    // ...
} else {
    // ...
}
Scoping
The body of an if statement does not create a new
scope. Any variables assigned within the body
of an if statement will modify the scope that the if statement itself
is in.
Example:
if true {
    a = 42
}
print(a) // 42
a = 18
if true {
    a = 42
}
print(a) // 42
Case Statements
case statements are a selection control mechanism that execute a clause based
on matching expressions. It is worth noting that the expression for case is
optional. When no expression is provided, it defaults the expression to true.
Additionally, the order of clauses is important, as they are evaluated from top
to bottom, executing the first match.
The syntax of a case statement is:
case expression {
    when clause_expression:
        // executed when clause_expression and expression are equal
    else:
        // executed if no clause matches expression
}
When Clause
Any clause that has an expression for comparison must use the when keyword.
It accepts a list of expressions, seperated by a ,.
Example:
case x {
    when "foo", "bar":
        return true
}
case {
    when x > 40:
        return true
}
Else Clause
The else keyword allows for capturing any expressions that have no matching
when clause.
Example:
case x {
    when "foo", "bar":
        return true
    else:
        return false
}