hsc

Conditional conversion

Syntax

Conditional conversion looks like that:
<$IF expression>

  ...if part...

[
<$ELSE>

  ...optional else part...

]

</$IF>

Example

A good example for the usage of conditional conversion inside a macro is the <WEBPAGE> macro used to create the documentation for hsc.

It also shows how to create a navigation bar with optional references to a next and previous page.

<*****************************
* WEBPAGE                    *
******************************>
<$macro WEBPAGE Title:string/r
                Chapter:string=""
                Next:uri prev:uri
                Back:uri=":index.html"
                NoCopy:bool
                NoMain:bool>
<HTML>
<HEAD>
  <TITLE><$insert TEXT=(Chapter)><$insert TEXT=(Title)></TITLE>
  <LINK REV="owns" TITLE="Thomas Aglassinger" HREF="mailto:agi@sbox.tu-graz.ac.at">
  <$if (SET NoMain)>
  <LINK REL="Home" HREF=":hsc.html">
  </$if>
  <LINK REL="Copyright" HREF=":copy.html">
  <$if (SET prev)>
  <LINK REL="Previous" HREF=(Prev)>
  </$if>
  <$if (SET next)>
  <LINK REL="Next" HREF=(Next)>
</$if>
</HEAD>
<IMG SRC=":image/head.gif" ALT="hsc"><BR>
<H1><$insert TEXT=(Title)></H1>
<BODY>
</$macro>

<*****************************
 * /WEBPAGE                  *
 *   foot line (sigh & date) *
 *****************************>
<$macro /WEBPAGE>

<** main button **>
<$if (NOT SET NoMain)>
<A HREF=":index.html"><IMG SRC=":image/main.gif" ALT="MAIN"></A>
</$if>
<** copyright button **>
<$if (NOT SET NoCopy)>
<A HREF=":copy.html"><IMG SRC=":image/copy.gif" ALT="COPY"></A>
</$if>
<** insert "previos" button **>
<$if (SET Prev)>
<A HREF=(Prev)><IMG SRC=":image/prev.gif" ALT="PREV"></A>
</$if>
<** insert "next" button **>
<$if (SET Next)>
<A HREF=(Next)><IMG SRC=":image/next.gif" ALT="NEXT"></A>
</$if>

<HR>
<ADDRESS>
  Thomas Aglassinger (
  <A HREF="mailto:agi@sbox.tu-graz.ac.at">agi@sbox.tu-graz.ac.at</A>
  ), <$insert TIME FORMAT="%d-%b-%Y">
</ADDRESS>
</BODY></HTML>
</$macro>

Notes

<$IF ..> is nestable.

You can't compare hsc's <$IF ..> to the C-preprocessor's #if. The main difference is that you can use <$IF ..> inside macros and that the expressions are recalculated for every new call of the macro.

MAIN COPY PREV NEXT


Thomas Aglassinger ( agi@sbox.tu-graz.ac.at ), 21-Dec-1995