diff --git a/tconfpy.3 b/tconfpy.3 index 98b03ec..5f090ef 100644 --- a/tconfpy.3 +++ b/tconfpy.3 @@ -1777,10 +1777,85 @@ good idea to put comments throughout such conditional blocks so it's clear what is going on. -.SS Existential Conditionals +.SS Existential Conditional Directives +There are three Existential Conditionals: \'.ifall\', \'.ifany\', and \'.ifnone\'. +Each has the same syntax: -.SS Comparison Conditionals +.nf + ExistentialDirective [var] ... + included if True + + .else # optional + include if False + + .fi +.fi + +In other words, existential conditionals require +.B one or more variable references. +In each case, the actual content of that variable is ignored. The test is merely +checking to see +.B if a variable by that name exists. +Nothing else may appear on an existential conditional line, except, +perhaps, a comment. + +The three forms of existential conditional tests implement three different kinds of +logic: + +.nf + .ifall [var1] [var2] ... + + This is a logical "AND" operation. ALL of the variables, \'var1\', \'var2\' ... + must exist for this test to be True. + + .ifany [var1] [var2] ... + + This is a logical "OR" operation. It is True of ANY of the variables, + \'var1\', \'var2\' ... exist. + + .ifall [var1] [var2] ... + + This is a logical "NOR" operation. It is True only if NONE of the variables, + \'var1\', \'var2\' ... exist. +.fi + +Here is an example: + +.nf + F00 = 1 + BAR = 2 + z = 0 + + .ifall [FOO] [BAR] + x = 1 + .endif + + .ifany [FOO] [foo] [fOo] + y = 2 + .endif + + .ifnone [BAR] [bar] [Bar] [SOmething] + z=3 + .endif +.fi + +When \*(TC finishes processing this, x=1, y=2, and z=0. + +You can also use references to environment variables in an existential +conditional test: + +.nf + .ifany [$MYPROGOPTIONS] + options = [$MYPROGOPTIONS] + + .else + options = -b20 -c23 -z -r + + .endif +.fi + +.SS Comparison Conditional Directives .SS The \'.literal\. Directive