Go to the first, previous, next, last section, table of contents.


invokeRestartInteractively

Function: invokeRetart { id -> }
file: 01-C-event.t
package: muf
status: alpha

This function accepts a symbol naming a restart, or else a restart identifier, which must have been obtained from getNthRestart, either directly or indirectly (as via findRestart) and invokes it.

If the :interactiveFunction value for the restart is nil, it is assumed that the :function takes no arguments, and it is invoked directly; If the :interactiveFunction value for the restart is not nil, it should be a function which constructs an appropriate argument block for the :function, typically using the queryFor* functions -- See section user i/o functions.

The invokeRestartInteractively function returns only if the restart :function itself returns -- many will do a goto to some suitable tag.

Example:

[   :name 'print
    :function  :: { [] -> }   |pop -> text   ]pop   text ,  ;
    :interactiveFunction :: [ "text to print" "" queryForString | ;
    :reportFunction "Print something on standardOutput"
| ]withRestartDo{
    'print invokeRestartInteractively
}

will prompt the user for text to print, print it, and return.

The invokeRestartInteractively function is currently implemented as

: invokeRestartInteractively { $ -> ! } -> restart

    restart symbol? if
        restart nil findRestart -> restart
    fi

    restart getRestart
    -> name
    -> fn
    -> tFn
    -> iFn
    -> rFn
    -> data
    -> id

    iFn if
        iFn call{ -> [] }
        fn call{ [] -> }
    else
        fn call{ -> }
    fi
;
'invokeRestartInteractively export


Go to the first, previous, next, last section, table of contents.