execline
Software
www.skarnet.org
The runblock program
runblock's purpose is to help you write execline commands in the execline language. It can only be used inside an execline script. If the script has been given blocks as arguments, runblock allows you to execute one of the blocks individually. It also allows you to give those blocks as a set of arguments to another command.
Interface
runblock [ -P ] [ -n argshift ] [ -r ] n cmd...
- runblock skips the first argshift positional parameters. It does that to allow you to design commands that take simple arguments and blocks.
- Then runblock looks for and parses blocks in the positional parameters.
- If the -r option is present: runblock skips n blocks and execs into the remaining arguments.
- Else it skips n-1 blocks and execs into the nth one.
- If cmd... is not empty, then instead of directly executing the block or the remainder, runblock appends the selected set of arguments to the cmd... command line.
- Normally runblock pops its environment frame before executing. If the -P option has been given, it does not pop.
- Of course, if the block structure doesn't match, runblock exits 100 with an error message.
Example: implementing the ifelse command
Suppose that we want to implement the ifelse command as an execline script, using the ifte command. runblock allows us to do it in a simple way:
#!/command/execlineb
ifte { runblock 2 } { runblock -r 2 } runblock 1
That's it.
Credits
The runblock idea, as well as the ifelse idea, comes from Paul Jarc.
