home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
APPS
/
lout2.lzh
/
LOUT2
/
DOC
/
TR.LOUT
/
ch3.15
< prev
next >
Wrap
Text File
|
1994-01-25
|
2KB
|
49 lines
@Section
@Title { "@Case" }
@Tag { case }
@Begin
@PP
case.sym @Index { @@Case symbol }
yield.sym @Index { @@Yield symbol }
The @@Case symbol selects its result from a list of alternatives,
depending on a tag:
@ID @Code {
"@Day @Case {"
" { 1 21 31 } @Yield st"
" { 2 22 } @Yield nd"
" { 3 23 } @Yield rd"
" else @Yield th"
"}"
}
In this example the result will be st if @Code "@Day" is 1, 21, or 31,
and nd if @Code "@Day" is 2 or 22, etc. The effect is similar to
accessing a database, though in a more compact form. The right parameter
is a sequence of @@Yield symbols, each with a left parameter whose value is
a sequence of one or more juxtapositions of simple words, and a right
parameter which may be any object.
@PP
We first describe the behaviour when the value of the left parameter of
@@Case is a juxtaposition of one or more simple words. Then the result of
the @@Case is the right parameter of the first @@Yield whose left parameter
contains either the value of the left parameter of the @@Case, or the special
value {@Code else}. If there is no such @@Yield it is an error.
@PP
When the left parameter of @@Case is not a juxtaposition of simple
words, the result is the right parameter of the first @@Yield whose
left parameter is {@Code else}, or an error otherwise. This permits
examples like
@ID @Code {
"@RunningTitle @Case {"
" dft @Yield @Title"
" else @Yield @RunningTitle"
"}"
}
where a running title is returned unless it has the value {@Code dft}
(which presumably means that no running title was supplied), in which
case an ordinary title is returned instead.
@PP
When a receptive symbol is placed within a @@Case, it should be included
in each alternative, since otherwise Basser Lout may become confused when
trying to predict whether the symbol will be a part of the result or not.
@End @Section