Templating
To make things more clear I'll explain a little bit how the evil stuff work

Here are the first lines of the current XSI_Environment_Shader.sIBLT template :
Template Example ( Some Lines have been removed to fit in the post ) :
Code:
[Template]
Release = @Release | 0.9 | String | Template Release
Date = @Date | 06 September 2008 | String | Date
Author = @Author | Kel Solaar | String | Author
EMail = @Email | kelsolaar_fool@hotmail.com | String | Email
Url = @Url | http://my.opera.com/KelSolaar/blog/ | String | Url
Software = @Software | XSI | String | Software
Version = @Version | 7.0 | String | Version
OutputScript = @OutputScript | sIBL_XSI_Import.js | String | Output Script
[sIBL File Attributes]
BGfile = @BGfile
EVfile = @EVfile
EVmulti = @EVmulti
EVgamma = @EVgamma
...
[Script]
// @OutputScript - @Release For @Software @Version
// Author : @Author
// EMail : @Email
// Homepage : @Url
// Template Last Modified : @Date
// sIBL_Framework
var cBackgroundFilePath = "@BGfile";
var cLightingFilePath = "@EVfile";
var lightingMultiplier = @EVmulti;
var lightingGamma = @EVgamma;
...
sIBL_XSI_Setup(cBackgroundFilePath,
cLightingFilePath,
lightingMultiplier,
lightingGamma,
...
);
function sIBL_XSI_Setup(cBackgroundFilePath,
cLightingFilePath,
lightingMultiplier,
lightingGamma,
...
)
The syntax is pretty close of the .IBL files one so I can parse it with the same class.
I call a node every block that start with "[ ... ]" and the following stuff are attributes of the node.
For example the first node is "[Template]" and the first attribute is "Release" with his values : "@Release | 0.9 | String" or "[sIBL File Attributes]" as a node and "BGfile" as and attribute and "@BGfile" for the current attribute value.
The "@BGfile" is the central point of the Framework. When I parse the .IBL File I store the .IBL "BGfile" attribute value ("D:/blabla.jpg" for example) and when I need to build the output script, I replace each occurence of "@BGfile" in the "[Script]" node by the value of the .IBL file and write the modified "[Script]" node to the disk as the output script.
Example of a final script :
Code:
// sIBL_XSI_Import.js - 0.9 For XSI 7.0
// Author : Kel Solaar
// EMail : kelsolaar_fool@hotmail.com
// Homepage : http://my.opera.com/KelSolaar/blog/
// Template Last Modified : 06 September 2008
// sIBL_Framework
var cBackgroundFilePath = "D:/_Temp/sIBL-Collection/apartment/Apartment_Spherical_HiRes.jpg";
var cLightingFilePath = "D:/_Temp/sIBL-Collection/apartment/Apartment_Diffuse.hdr";
var lightingMultiplier = 1.000000;
var lightingGamma = 1.000000;
var cReflectionFilePath = "D:/_Temp/sIBL-Collection/apartment/Apartment_Reflection.hdr";
var reflectionMultiplier = 1.000000;
var reflectionGamma = 1.000000;
var sunU = 0.625000;
var sunV = 0.390600;
var sunColor = [240,250,255];
var sunMultiplier = 1.100000;
var createBackground = 1;
var createLighting = 1;
var createReflection = 1;
var createSun = 1;
var createFeedBack = 1;
var feedbackRadius = 1000.0;
var createGround = 1;
var hideLights = 1;
var activateFinalGather = 1;
var activateTonemapping = 1;
sIBL_XSI_Setup(cBackgroundFilePath,
cLightingFilePath,
lightingMultiplier,
lightingGamma,
cReflectionFilePath,
reflectionMultiplier,
reflectionGamma,
sunU,
sunV,
sunColor,
sunMultiplier,
createBackground,
createLighting,
createReflection,
createSun,
createFeedBack,
createGround,
feedbackRadius,
hideLights,
activateFinalGather,
activateTonemapping);
function sIBL_XSI_Setup(cBackgroundFilePath,
cLightingFilePath,
lightingMultiplier,
lightingGamma,
cReflectionFilePath,
reflectionMultiplier,
reflectionGamma,
sunU,
sunV,
sunColor,
sunMultiplier,
createBackground,
createLighting,
createReflection,
createSun,
createFeedBack,
createGround,
feedbackRadius,
hideLights,
activateFinalGather,
activateTonemapping)
...
If you check, it's the "[Script]" node updated with the values of .IBL file nodes.
After you have special attributes with multiples values like :
createBackground = @createBackground | 1 | Boolean
It's basically some default value and the attribute type for the time the Gui will be build ( and to be able to have a functionnal output )
Voilą

Hope it's easier to understand now :]
You can easily modify the template to fill your needs, or even build new ones for other applications etc

Here is a Templates centric thread, you'll find what Templates are coded, planned etc ... :
http://www.hdrlabs.com/cgi-bin/forum/YaBB.pl?num=1223936394