Reference Developer Tutorial 1 Introduction 2 Macros 3 Typesetting 4 Example 5 Hints 6 Examples 7 Webmaking SEARCH

7.3 Replacing Messy HTML Constructs

One of the greatest benefits of using FunnelWeb is its ability to replace messy slabs of HTML with a simple macro call. This page provides lots of examples of this.

Hyperlinks

Hyperlinks are messy and you can eliminate their messiness from your FunnelWeb web source by defining a macro for each link you want to use. For example:

    @$@<Dilbert@>@Z@M@{@-
    <A HREF="http://www.dilbert.com/">Dilbert</A>@}
    @$@<Yahoo@>@Z@M@{@-
    <A HREF="http://www.yahoo.com/">Yahoo</A>@}

While the definitions themselves are certainly messy, having made them, we are now free to refer to Dilbert and Yahoo within our webs in a very clean manner indeed. For example, the links page of the previous example now becomes just:

    @O@<links.html@>@{
    @<Begin page@>@(Dave's Links@)

    <P>Check out @<Dilbert@> and @<Yahoo@>!

    @<End page@>
    @}

Images

Suppose we want to include a small image of a checkmark at various points without a web page. Here's the HTML that has to be included at each point:

    <IMG SRC="bin/tick_red_12.gif"
    WIDTH="12" HEIGHT="12"
    HSPACE=4 VSPACE=0
    ALT="*" BORDER="0">

Yuk! To eliminate this mess in our FunnelWeb/HTML, we can define a macro for a tick mark as follows:

    @$@<Tick@>@M@{
    <IMG SRC="bin/tick_red_12.gif"
    WIDTH="12" HEIGHT="12"
    HSPACE=4 VSPACE=0
    ALT="*" BORDER="0">@}

Now, using tick marks without your text is easy. Here's an example:

    @<Tick@>Low cost.<BR>
    @<Tick@>Easy installation.<BR>
    @<Tick@>Available now!<BR>

Large Form Fields

Another example is where you have form fields with lots of options. Here's an example of a commonly occurring form field that goes on for a couple of hundred lines!

    <SELECT NAME="Country">
    <OPTION>United States
    <OPTION>Afghanistan
    <OPTION>Albania
    ...
    <OPTION>Zambia
    <OPTION>Zimbabwe
    </SELECT>

Using FunnelWeb, you can move all this to a single macro definition as follows:

    @$@<Country form field@>@M@(
    <SELECT NAME="Country">
    <OPTION>United States
    <OPTION>Afghanistan
    <OPTION>Albania
    ...
    <OPTION>Zambia
    <OPTION>Zimbabwe
    </SELECT>

Now, whenever you want a country field in a form, you can just write:

    @<Country form field@>

Navigation Buttons

Sometimes the navigation constructs that appear within pages can become rather messy. Here's an example where we have three buttons at the bottom of each page.

    <TABLE WIDTH="100%">
    <TR>
    <TD ALIGN="left"   VALIGN="bottom"><
     A HREF="links.html"><IMG SRC="bin/left.gif"></A></TD>
    <TD ALIGN="center" VALIGN="bottom"><
     A HREF="home.html"><IMG SRC="bin/up.gif"></A></TD>
    <TD ALIGN="right"  VALIGN="bottom"><
     A HREF="hobbies.html"><
     IMG SRC="bin/right.gif"></A></TD>
    </TR>
    </TABLE>

We can move all this to a single macro definition that has three parameters, one for each target page.

    @$@<Nav@>@(@3@)@Z@M@{
    @<P@>
    <TABLE WIDTH="100%">
    <TR>
    <TD ALIGN="left"   VALIGN="bottom"><
     A HREF="@1"><IMG SRC="bin/left.gif"></A></TD>
    <TD ALIGN="center" VALIGN="bottom"><
     A HREF="@2"><IMG SRC="bin/up.gif"></A></TD>
    <TD ALIGN="right"  VALIGN="bottom"><
     A HREF="@3"><IMG SRC="bin/right.gif"></A></TD>
    </TR>
    </TABLE>
    @}

Now, to add navigation buttons to a page, we can just write (near the end of the page).

    @<Nav@>@(links.html@,home.html@,hobbies.html@)

If you wanted to, you could build the navigation buttons into the `@<End page@>` macro and set it up with three parameters instead.

Webmaster Copyright © Ross N. Williams 1992,1999. All rights reserved.