HTTPort web site uses BOA web scripting engine Products
SDK
FAQ
Forum
Download Contact
Donate
powered
with
BOA
BOA is a neat web scripting engine. Its concept is different from all other scripting engines. It's somewhere along the lines "HTML meets XSLT", although it's been around before XSLT, and therefore doesn't bear any of it.
* Plain HTML is a valid BOA code. Valid BOA code looks like plain HTML.
* BOA is extremely simple in idea, it can be learnt by example in may be few hours. It's simple to a point where typical developer would actually lack typical features, but it's only a matter of different approach.
* BOA extends HTML semantics, while retaining it's syntax. This is easy to understand for a web page designer. On the other hand, the tools that BOA gives a developer allow for a great amount of flexibility.
* BOA is portable, it runs under Unix (Apache mod) and Windows (ISAPI lib), and comes in GPL source.
Here are some relevant links in case you are interested:
Developer's introduction to BOA:
http://boa.spidereye.com.au/boadoc/devintro.boa

The official web site:
http://www.spidereye.com/

Downloads and docs:
http://boa.spidereye.com.au/

And here is a few actual code samples from this site just to quickly catch your eye:
Simple utility tag defined and used:
<deftag name="dot">
    <img src="images/dot1x1.gif" width="1" height="1">
</deftag>

...
<td colspan="8" height="6"><dot></td>
...
Yields:
<td colspan="8" height="6">
<img src="images/dot1x1.gif" width="1" height="1">
</td>

Another useful tag, slightly more complex, with expressions and looping:
<deftag name="columns"><arglist widths="text">
    <setvar name="widths_list" expr="split('[ ]+', widths)">
    <tr>
    <loop name="widths_list">
        <td height="0" width="{{widths_list-value}}"></td>
    </loop>
    </tr>
</deftag>

...
<table>
<columns widths="33% 33% *">
...
Yields:
<table>
<tr>
<td height="0" width="33%"></td>
<td height="0" width="33%"></td>
<td height="0" width="*"></td>
</tr>

Server-side caching:
<fileinfo date_modified path="{{cached_filename}}" setvar="cached_modified">
<fileinfo date_modified path="{{original_filename}}" setvar="original_modified">

<if expr="cached_modified >= original_modified">
    <readfile path="{{cached_filename}}" setvar="cached_content">
    <insert name="cached_content" format="html">
    <cancel>
</if>
Doesn't yield anything visual, but loads up the cached copy of the requested page and delivers it.
Bandwidth and support provided by
Quantum Silicones Inc.
HTTPort products family is written by Dmitry Dvoinikov
(c) 1999-2006 Dmitry Dvoinikov