Hitop Revision History
- Version 0.38 (2005-01-25)
- Maintenance release to allow compilation of PostgreSQL plugin in recent
- Version 0.37 (2003-11-26)
- Maintenance release to allow hitop to compile on V3.3 of gcc.
- New function PLURAL(num) in the English plugin to pluralize a
noun if passed a value other than 1, or otherwise leave it as it is.
- Minor bugfixes.
- Version 0.36 (2002-12-30)
- Maintenance release to allow hitop to compile on V3 of gcc.
- Maths evaluation now correctly deals with numbers in exponential form, and
no longer underflows its evaluation stack for malformed expressions.
- The COLOR plugin has new functions BRIGHTENABS, DARKENABS and SATURATEABS.
The ROTATE function now correctly deals with negative colourwheel rotations
that pass 0°. The DISTANCE function gives better estimates of colour
- The SMS procedure in NOTIFY has been removed.
- Version 0.35 (2001-06-10)
- <@COMMENT>...</@COMMENT> has been introduced. It can be wrapped
around text, markup, and crucially around hitop markup. The markup inside does
not have to be structurally correct. The whole section is removed from the
- @ELSEIF has been added. It can be used as many times as you wish straight
after an @IF (but before the @ELSE if there is one), and takes exactly the
same parameters as @IF.
- @FILE now takes a FORMAT of one of HITOP, SAFE and VERBATIM. HITOP is the
default, and works as a traditional @FILE. SAFE reads in the stream, folding
spaces, etc. but doesn't process the stream. It's useful where you want to
include HTML that others are controlling. VERBATIM reads and outputs the file
as it is, including spaces and linebreaks, except it will swallow a final
- @FOR is a pure, traditional for loop. It's always been possible with
@FOREACH, but it was never obvious. @FOR takes an ENTRY for the procedure to
be called, FROM and TO contain the extremes of the for loop, with an optional
STEP. The direction of the count will be automatic.
- @FOREACH now takes a PREFIX which allows to you foreach over a range of
variables - by name. It's probably most useful as "FORM_" for working
over the variables passed to a hitoplive file.
- @GET, @IF and @SET now take EXPR (for expression) for use instead of a
VALUE. In the case of @IF, if the expression evaluates to zero, it's false.
This will get more useful when we beef up the evaluator.
- @HITOP now has a CONTENTTYPE so you can specify what kind of document
hitoplive is to return. This gets far more useful when we have XML support
- @SET can take an SRC in place of a VALUE to set the variable to the
contents of the file. All characters are left intact, except a final carriage
return will be swallowed.
- Version 0.34 (2001-02-04)
- Tabs now correctly expand (to a single space) on input.
- You can now safely embed < and > inside quoted strings on input and
- Hitop does much more internal tokenization and caching throughout. This
makes it faster and smaller.
- Migration to supporting XML has begun. None of the changes are
- @FOREACH didn't like multicharacter separators. Fixed.
- Hitop can now find IMGs that have SRCs that contain URL encoded
- Output now doesn't break quoted strings in elements over multiple lines.
This stop Netscape mucking up split button text and ALT strings.
- The ROMAN() core string function to convert an integer into its roman
numeral representation has been added.
- The RANDOM() core string function has been added.
- Hitoplive now obliterates passwords from error messages in database
- Hitoplive now outputs its warnings and execution time at the end of its
output in a comment.
- Hitoplive now correctly handles missing files by giving a 404 error rather
than a 500.
- The attributes ASSIGN and DISCARD have been introduced to @QUERY to make
queries that don't return multiple results more straightforward.
- Four new plugins (deutsch, english, francais, italiano) have been
introduced to provide localized full and short month and day names.
- The color plugin has a new SMARTSAFE() function which provides a
better-than-usual websafe colour. It won't turn a subtle pink into a bright
yellow, for example.
- The color plugin now correctly crops out of range RGB values.
- The notification plugin has been released.
- Version 0.33 (2000-10-22)
- A PostgreSQL engine has been added
- Cookie support has been added to hitoplive using the @SETCOOKIE
- IMG will now fill in the size for PNG images thanks to code contributed by
- Items passed back through FORM_ variable now have their entities escaped
in the standard way to prevent security problems
that can occur if hitop pages don't validate data they are given. This is not
a problem with hitop itself but can occur in all dynamic scripting
environments if developers are unaware of exploitable features
- The database engines now expect their query strings to have entities
escaped, and will escape the entities in the results they pass to your
- PERSISTENT scope has been removed, as in practice it was no use at all,
and such things are better done with a database. The @LOAD command has
therefore been removed
- A few obscure inconsistencies between the original implementation of NAV
and the current one have been fixed
- There have been changes to improve the compatibility of the makefile
- Version 0.32 (2000-04-26)
- Finally, the rewrite and move to a new architecture is complete. The first
thing that should strike you is the increase in speed - typically around
four times the speed of 0.30. Secondly, there's hitoplive and plugins to deal
with, but they'll be described in more detail when the new site arrives in the
very near future. The following commands are new in 0.32: @LOAD (to retrieve
variables from persistent store), @RAWHEADER (used by hitoplive to let you
handle HTTP headers directly), @REQUIRES (to load plugins) and @UNSET (the
opposite of @SET). The following commands have had their behaviour enhanced:
@HITOP (addition of DEBUG and LIBS), @IF (new options for COMPARE) and @SET
(two new scopes for you to with and DEFAULT). You can read more in the reference section.
- Beta Version 0.31 (2000-03-06)
- This is pretty much a rewrite of the existing hitop code. At this
point - before we start talking about its new features - it's
important that we check its compatibility with existing sites. If you have a
hitop-driven website, it would be useful if you could give the new beta
version a go. I promise you that the new features waiting in the wings make
the migration a big step forward.
- Version 0.30 (1999-12-04)
- The reliance on libg++ has been removed. This has led to the
reimplementation of string handling (using a wrapper class around STL's string
class) and a replacement of the use of regexes. @DEBUG has been introduced to
help you debug your output. Calls to the non-standard strptime() have been
replaced. Variable handling has been improved. A long-standing problem with
the capitalization of parameters in inline string expansions has been fixed.
This version should compile and run on more platforms than ever before.
- Version 0.29 (1999-06-23)
- The rewrite of NAV had introduced a problem with submenus that opened out
with a submenu as their first item. This has been corrected.
- Version 0.28 (1999-06-22)
- The command @HITOP has been introduced. This currently has no function,
but is removed from source. Major parts of NAV have been rewritten as a new
set of classes. This migration is ongoing. The formatting of parent items in
OPEN formatted NAV bars has been corrected. The string function D2X has been
- Version 0.27 (1999-06-10)
- IF no longer accepts string processing commands in expressions without a
VALUE. IMG no longer searches for files when a fully-qualified URL is given.
NAV now passes TYPE and OPEN to ENTRY procedures. These two values supersede
SELECT. ESCAPEURL now only escapes those characters it needs to. Various
string processing commands did not function as documented with negative values
and have now been corrected. The string processing function C2X has been
added. More of these type of functions will follow.
- Version 0.26 (1999-04-09)
- The hexadecimal digits produced by the string function ESCAPEURL are now
uppercase. Three new date-handling string function, DATETODAYNUM, DAYNUMTODATE
and DAYOFWEEK, have been added.
- Version 0.25 (1999-03-12)
- The default FLAT format of NAV has had the trailing vertical bar removed
from each level. The command line format has been changed slightly. Several
string processing functions have been added to the variable handling. To
support these, string literals for variable names are now permitted and @GET
has an optional FORMAT parameter. @FOREACH now takes a SRC to use a database
- Version 0.24 (1999-03-02)
- NAV files may now contain absolute URLs - but will issue a warning
about their use. IMGs will now report if the file cannot be interrogated for
the WIDTH and HEIGHT. Fixed a bug in FLAT formatted NAV where the SELECT
passed to ENTRY was incorrect. Added <@UNDEF>.
- Version 0.23 (1999-02-23)
- Errors and warnings now report the file and position of the problem in
- Version 0.22 (1999-02-23)
- Increase in speed thanks to a rewritten structure parser. Hitop now
(pedantically) checks the basic structure of the resulting HTML document.
Hitop now accepts all hitop markup with an @ prefix. It is expected that this
will become recommended and eventually compulsory. A longstanding bug which
permitted lone <ELSE>s was fixed with the reimplementation of
the structure parser.
- Version 0.21 (1999-02-22)
- <NAV> now passes the parameters POSITION and
TOTAL to ENTRY procedures. PREGROUP and
POSTGROUP can now be used with all <NAV> styles.
- Versions 0.13 to 0.20
- Info to be added.
- Version 0.12 (1998-02-21)
- An obscure algorithm bug in <IF> handling was causing
corruption on certain platforms but was being masked by the memory handling of
others. <IF> should now work fine with empty
<IF> and <ELSE> terms.
- Version 0.11 (1998-02-17)
- I broke the output of error messages in the previous version. Fixed.
- Version 0.10 (1998-02-09)
- Hitop now formats its HTML output sensibly. <PRE> is still
not recommended. Some minor efficiency improvements.
- Version 0.09 (1998-01-28)
- Minor changes to the default formatting of <NAV>.
- Version 0.08 (1998-01-23)
- SRC, FROM and TO added to
- Version 0.07 (1998-01-21)
- The first appearance of <NAV>.
- Version 0.06 (1998-01-19)
- Including empty files caused spurious characters to appear. The problem
has been fixed.
- Version 0.05 (1997-12-08)
- <DEF> with missing </DEF> caused a
dereference of a null pointer (bug introduced in previous version). Whitespace
folding was fundamentally flawed.
- Version 0.04 (1997-12-06)
- Predefined variables FILE, DATE, DATEYEAR,
DATEMONTH, DATEDAY, TIME, TIMEHOUR,
TIMEMINUTE and TIMESECOND introduced. Comparative
<IF> statements introduced.
- Version 0.03 (1997-11-29)
- First public beta release.