JET Extension Tags

Bradford Matthew Arant Sr. November 8, 2025

Contents

1 User Defined Tags and Tag Libraries 3 2 Global Variables 4 3 Local Variables 4 4 Keyword Variables 4 5 Environment Variables 4 6 CGI Variables 4 7 Operators 5

7.1 Arithmentic Operators . . . . . . . . . . . . . . . . . . . . . . 5 7.2 Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . 5

8 Function Reference 5 8.1 concat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 8.2 integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 8.3 left . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 8.4 random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 8.5 round . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 8.6 substring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

9 Session Control 6 10 call 6 11 comment 6 12 cookie 7 13 dump 7 14 exclude 7 15 expr 7 16 for 7 17 header 7 18 if/else 7 19 ifrow/else 8 20 include 8 21 jet 8 22 mysql 8 23 read 8 24 set 9 25 sql 9 26 stream 9 27 system 9 28 tag 9 29 until 10 30 while 10 31 whiledir 10 32 whilerow 10 33 write 10

Introduction

JET will pass through the untagged areas to the output without any modifications. Data contained within the tags may modify their containers before placing any output. The space taken by the tag itself is not passed to the output and will not appear in the output.

Skip Blank Lines options on containers will skip passing any blank lines or line containing only whitespace to the output.

Tags and Attributes

XML style tagging is used to insert functions and other behaviors into the script. As the document contents are output a tag may be inserted to perform the desired function and affect the output.

Tag attributes are used to pass parameters into the operations and functionality for each tag.

Outputting a database from mysql may be performed using the mysql tag in combination with the ifrow , whilerow and sql tags.

You can define your own tag definitions and use them within your JET scripts.

Keywords are not defined as part of the tag definition and any attribute added to the implementation of the tag is passed into the tag process as a local variable for that container.

Tag definitions can also be defined as scoped or unscoped, as follows:

scoped - local variables using the #[n] format can be scoped to just your tag contents. Access to local variables where your tag is being used must use the ’parent’ scope option to retrieve variables from the parent.

unscoped - local variables are shared with the parent tag environment and are not unique to your tag definition.

A ¡container /¿ tag can be inserted into the container and will take the contents of the container at runtime and insert it into the output when processing the user defined tag definition. The container tag of the the ¡container /¿ is processed before the container containing the ¡container /¿ so that local variabls can be set and processed that will affect the tags overall output.

Tags are many times nested with tags running within the container of a higher tag.

Variables and Variable Types

Variables are used to contain dynamic content values and can be sourced from several locations and limited in scope depending on use. Some variable types can be set to reflect script state or are read only from other outside sources of data.

Jet tags can be either scoped or unscoped.

The following is a list of variable types and a brief description of their source:

• Global - values can be initiaized using the set tag and specifying the scope of global.

• Local -

• Keyword - within a tag’s container we may access the keyword values specified on the containing tag.

1 Global Variables

Global variables are available to all logic once the values have been set.

Global variables are accessed throughout the procedure with the $[name] syntax.

Global is the default if the scope is not specified for any function that writes to a variable.

2 Local Variables

Local variables are established using the set tag and specifying a scope of local. Local variables are typically only available within the container where they are defined. Some containers may not be capable of storing local variables (i.e. set tag) and are inheriting the local scope from their parent tag.

3 Keyword Variables

Keyword variables are set when they are specified on a containing tag. Within the container you can access the variable using the syntax $[%name].

The variable retrieved is not processed for variable resolution.

4 Environment Variables

5 CGI Variables

When operating Jet in CGI mode you have access to the form data submitted by the remote client (usually a browser or curl request) using the POST method.

Expressions

Expressions are used to perform complicated calculations (arithmetic), perform comparisons between values (boolean), manipulate strings (string) or perform operations on dates (date).

6 Operators

Operators are used to perform arithmetic or boolean operations on arguments to derive a particular result. There are two types of operators, as follows:

• Arithmetic -

• Boolean - 6.1 Arithmentic Operators

6.2 Boolean Operators

7 Function Reference

7.1 concat

7.2 integer

7.3 left

7.4 random

Use the random function to return a random number between 0 and 1.

7.5 round

Use the round function to round a numeric value to the specified number of digits after the decimal point.

7.6 substring

Use the substring operation to extract a portion of a string and return the value as a string.

Common Gateway Interface Features

JET extension tags provides options for enabling the processing of data using the Common Gateway Interface (CGI) specification used by Apache and NGINX as well as other HTTP server applications. This makes JET a powerful tool for creating web interfaces and API handler environments for various javascript frameworks as well as just native HTML style interaction.

To enable the CGI features within a requested document you can specify the cgi=”true” attribute on a ¡jet¿ tag containing the document or ¡jet /¿ tag contained within the document.

When you enable the CGI interface the script will look for specific environment variables used to retrieve the input data from the browser interface and automatically provide these values to the JET scripting using the variables interface. There are currently three supported data formats or content types through this interface. These content types are:

formdata/urlencoded mutipart/formdata text/json

8 Session Control

Common use of the CGI is requiring the transaction based interaction of a web browser to maintain a state between interactions. JET 2.0 provides a built in mechanism to assist in managing a session concept. This approach uses a single session cookie to identify the session to the back end services.

By specifying a seesiondir keyword on the ¡jet¿ tag you enable the session control functionality. Upon the delivery of a request that does not contain a session ’token’ a session token will be generated for the request and a cookie will be returned in the reponse containing the session token. Additionally, a session file is placed into the directory named after the token. Captured session data will become available to future requests coming into the server and made available through the variable formats for the session. The ¡set¿ tag will also have an additional scope value that can be used to store the value in the session. This is scope=”session”. Tag Reference This chapter will cover all the tags and parameters required to perform the operations that JET provides. A special character sequence is used to exclude a section from tag and variable parsing. This sequence is —¿ this is not parsed or resolved ¡—. This takes affect through all levels and depths of tag processing and is different from the ¡exclude /¿ tag as exclude may be further parsed if output is again evaluated.

9 call

Use the call tag to evoke an executable file from a jet script. The atrributes are: pgm argn name input error The call tag is unscoped.

<call pgm="ls" arg1="-al" name="listing" />

will call the ls command with parameter -al and place the output into a variable named ’listing’.

10 comment

Use the comment tag to create a section in the jet script that can be used for making comments and is ignored by the jet reader. The comments tag has no attributes.

11 cookie

Use the cookie tag to specify a cookie when using the CGI features of JET.

12 dump

Use the dump tag to display the contents of all the global, local and cgi cariables to a specified file. The attributes are:

file

13 exclude

Use the exclude tag to exclude a conainer contents from normal parsing and variable resolution.

14 expr 15 for

Use the for tag to iterate a tag container for a logical number of times. The attributes are: start end step name - defines a name for the iterator that will be available within the loop. scope - defines the scope of the iterator for the loop.

16 header

Use the header tag to output a header prior to outputting the process buffer to the requester. The attributes are: name expr value container

17 if/else

Use the if tag to perform a conditional output on the tag container. An optional else container provides alternate output in the event the condition is not met. The attributes are: value1 value2 type expr

18 ifrow/else

Use the ifrow tag to output the tag container if a row exists in the mysql tag. An optional else container provides alternate output in the event that there is no row for the sql result. The attributes are: sessionid

19 include

Use the include tag to include another content file at the location of the include tag. The attributes are: file

20 jet

Use the jet tag to specify parameters for the jet parsing session and to control the output options.

21 mysql

Use the mysql tag to specify parameters for connecting to a mysql server. The container of the tag is where you can specify the sql statement and method of processing the result output of the executed sql statement. The mysql session created is valid only withon the container of this tag. The attributes are: host database user password sessionid

22 read

Use the read tag to read the contents of a file contained on the local file system into a variable for further output or processing. The attributes are: file name

23 set

Use the set tag to store initialize a variable to a value contained in a value attribute, the result of an expression (expr) attribute or the contents of the set tag container. The attributes are: name expr value container scope

24 sql

Use the sql tag to specify an sql statement to run on the sql server specified in the mysql tag. As long as sql statements are executed within the same mysql containing tag then the same mysql session is used for each sql statement. The attributes are: sessionid container

25 stream

Use stream tag to output data from the server without waiting for the standard output buffering and processing of the JET script. This is useful for outputting images and streams for audio and video without the server having to load the whole thing into RAM first. The attributes are: file

26 system

Use the system tag to execute a bash shell command within the JET script.

27 tag

Use the tag tag to define a new tag definition for use within the script. Tags are normally defined globally and can be used anywhere within the script. Tags can also be defined within other tags and the scope of those tags is only within the defining tag’s container. The enclosed tag definition will not be available globally.

28 until

Use the until tag to process a container at least once and continue to process the container until the specified condition is met. Note that this tag always processes the container at least once. Be careful not to create a never ending loop by not modifying any of the condition parameters specified in the condition clause.

29 while

Use the while tag to process a container if the specified condition is true. Note that the container may not be processed if the condition is never met. Be careful not to create a never ending loop by not modifying any of the condition parameters specified in the condition clause.

30 whiledir

Use the whiledir tag to loop a directory path to the container for processing.

31 whilerow

Use the whilerow tag in combination with mysql and sql tags to provide a container to process for each row retrieved by the sql statement.

32 write

Use the write tag to write data to the local file system.