Skip to navigation
Calling

goto

View as MarkdownOpen in Claude

Jump to a label within the current section, optionally based on a condition. The goto method will only navigate to a label within the same section.

Properties

goto
objectRequired

An object that accepts the following properties.

goto.label
stringRequired

The label in section to jump to. It must match a label defined with the label method. A SWML variable reference is resolved when the goto runs.

goto.when
string

A JavaScript condition that determines whether to perform the jump. If the condition evaluates to true, the jump is executed. If omitted, the jump is unconditional.

goto.max
integer | stringDefaults to 100

The maximum number of times to jump, from the minimum of 1 to max 100 jumps. Accepts an integer or a SWML variable reference (for example, ${vars.max_retries}) that resolves to a jump count in that range.

The jump count belongs to the target label: every goto in the current execution that jumps to the same label adds to that count, and each goto compares its own max against it. Once the count reaches max, the jump is skipped and execution continues with the next method.

Examples

Loop with max

version: 1.0.0
sections:
main:
- label: foo
- play:
url: 'say: This speech will be repeated 4 times.'
- goto:
label: foo
max: 3

Loop if a condition is satisfied

version: 1.0.0
sections:
main:
- label: foo
- play:
url: 'say: This is some text that will be repeated 4 times.'
- set:
do_loop: true
- goto:
label: foo
when: do_loop === true
max: 3