WHATSNEW For 'tconfpy' 2.112 (Thu Jan 20 04:37:42 CST 2005)
----------------------------------------------------------------------
BUG FIXES
- References to variables that included an explicit namespace
string were not being properly processed if a template
existed for that variable. Fixed.
CHANGES
- More and better validation is done of parameters passed to
the parsing API:
In addition to the initial symbol table, the passed template table
is also checked.
The initial value for each passed symbol is checked for valid type
in both the symbol table and the template table passed to the API.
Template names are checked to make sure they do not contain
namespace separators. Templates must be named canonically. This
was always a requirement, but it was never checked or documented.
- Explicit checks are now made to ensure that the configuration does
not do circular or recursive .includes. Any attempt to do so will
produce an error and the offending line will be ignored, but the
program will attempt to continue processing the rest of the
configuration.
- The program changes described below have made the 'ParseConfig'
API incompatible with previous versions of 'tconfpy'. The version
number has been branched to 2.x to reflect this fact. Existing
programs that use 'tconfpy' will have to be modified to use
this new release.
- Symbol Tables and Templates are now first-class objects in their own
right (classes 'SymbolTable' and 'Template' respectively). This
means API will not be compatible with programs built using previous
versions of 'tconfpy'. You must now pass/receive objects of the
appropriate type rather than just dictionaries as was previously the
case.
- The 'RetObj' object has been removed. Objects of type 'SymbolTable'
are now returned.
- There is significant internal code restructuring to encasulate
parse-related data structures into the 'SymbolTable' object. This
eliminated most of the global variables.
- The program now returns both the number of total lines processed,
(SymbolTable.TotalLines) and a list of all the configuration files
processed (SymbolTable.Visited).
NEW FEATURES
- Added the 'CallingProgram' API keyword parameter. This allows the
calling program to change the program name embedded in every message
produced during the parse.
- It is now possible to parse a configuration that is stored in-memory
as a list of text lines. The 'ParseConfig' API "autodetects" whether
it is parsing a file or an in-memory list by examining the type of
the first (mandatory) parameter passed to it. If it is a string,
the program assumes it to be a file name. If it is a list, the
program assumes the list contains configuration statements. If it
is of any other type, the program declares an error.
The program also validates each element of an in-memory list and
ignores anything that is not a string. An error is produced in this
case.
- Added the ability to test the *state* of boolean variables in the
existential conditionials (.ifall/any/none). Previous versions of
'tconfpy' could only do this with an explict test like:
.if BooleanVar == True
It is now additionally possible to do logical testing like this:
.ifall [BooleanVar1] [BooleanVar2] ...
Previously, this would have amounted to '.ifall True False ...'
which likely would fail since the variables 'True' and 'False'
would not be defined.
As of this release, the semantics in the specific instance of
boolean dereferences during (any of) the existential conditional
tests have changed. In this case the logical *state* of the
variables being tested is returned. This is believed to be clearer
than doing explicit equality tests on booleans (though that ability
is still supported).
Note that the following construct continues to work as before:
.ifall BooleanVar1 BooleanVar2 ...
This tests to see if the variables actually *exist*.
WHATSNEW For 'tconfpy' 1.185 (Sun May 2 03:07:05 CDT 2004)
----------------------------------------------------------------------
BUG FIXES
- The content of literal blocks found within False conditional
blocks was being reported as a syntax error. This was
benign, but annoying. Now all text within literal blocks is
not syntax checked, whether or not the enclosing block is True.
WHATSNEW For 'tconfpy' 1.184 (Tue Apr 27 18:54:11 CDT 2004)
----------------------------------------------------------------------
Added support for Variable Templates.
Added the 'ReturnPredefs' API option.
WHATSNEW For 'tconfpy' 1.181 (Sat Apr 24 15:49:13 CDT 2004)
----------------------------------------------------------------------
First public release of the program.