WebLingo
WebLingo provides a technique for embedding OScript language code into HTML files and, in effect, creates an OScript-enhanced version of HTML. WebLingo is embedded into HTML via three mechanisms: directives, statements, and expressions.
Directives
Directives are the meta symbols used by WebLingo to control how the statements and expressions are interpreted. Directives are always indicated by the presence of two semicolons at the beginning of a line. WebLingo includes the following directives:
The webscript and end directives
The webscript directive declares a WebLingo function, called a webscript, to which formal parameters can be passed. Whenever an webscript directive is used, a matching end directive must be used to indicate the end of the webscript. For example:
;;webscript FuncPopup( Record args, Dynamic node, List cmds ) .... additional WebLingo code here ... ;;end
If no webscript directive is found within a WebLingo source file prior to the first non-blank, non-comment line, then the following implied webscript directive is used (with an implied end directive):
;;webscript MyWebscript
The call directive
The call directive invokes a webscript (a WebLingo function) contained within the same or another HTML template. Parameters can be passed to the called webscript. There is no return value, however, because a webscript is designed for output generation, not necessarily computation.
The following examples call a webscript within the same HTML template:
;;call UpdateUserTasks( userInfo, taskList ) ;;call DisplayUserTasks
The following examples call a webscript in a different HTML template:
;;call <htmlPrefix + "navpopup.html">( "Head" ) ;;call <htmlPrefix + "menufoot.html">()
The oscript and html directives
The oscript and html directives change the current default language. The oscript directive changes it to OScript; the html directive changes it back to HTML (the default language). The oscript directive is particularly useful when including a long stretch of OScript code since escaping each line with a prefixing semicolon would become tedious. The oscript directive is specified as follows:
;;oscript{ ...oscript lines go here, without prefixing semicolons... %HTML lines must be prefixed by percent symbols ;;}
When OScript is the default language, HTML lines must be specified with a prefixing percent ( % ) symbol. Note that HTML is the default mode and that the html directive is only necessary if an oscript directive is currently in effect. The html directive is particularly useful when including a long stretch of HTML within a long stretch of OScript code. The html directive is specified as follows:
;;html{ ...html lines go here, without prefixing percent symbols... ;OScript lines will require prefixing semicolons. ;;}
When the html directive is in effect, OScript lines must be specified with a prefixing semicolon ( ; ).
Statements
Since WebLingo is built upon OScript, the full power of OScript is available to a WebLingo author. In general, any OScript statement can be included into a WebLingo source file by prefixing it with a semicolon ( ; ). For example, the OScript if and for constructs can be used as follows:
;if Length( .TaskList ) == 0 You have no tasks assigned at this time ;else Your tasks are: ;for task in .TaskList Task: 'task.TaskName' ;end ;end
The above WebLingo fragment examines the TaskList and generates either a message (You have no tasks assigned at this time) or a simple list of task names.
Expressions
WebLingo expressions are HTML source lines that have OScript expressions embedded within them. During execution of an HTML template, these embedded expressions are evaluated, and their resultant values substituted at the corresponding positions in the resulting HTML page.
WebLingo expressions are preceded and followed by a back quote character ( ' ) and can reference any OScript object or feature to which the HTML template has access. For example:
Project Info for `.Project.ProjectName` INPUT TYPE="RESET" VALUE="`[WebDsp_HTMLLabel.ResetButtonLabel]`"
Expression Escaping
By default, when an OScript expression is evaluated and expanded within WebLingo, the result is converted into a String and HTML Escaping is applied. HTML Escaping converts any HTML metacharacters found in the String into the corresponding HTML code. For example, the metacharacter > becomes > and < becomes <. This allows you to use HTML expressions within Strings that will have no effect on the generated HTML.
In some cases, you may want to inhibit this type of escaping to allow your code to generate more precise HTML. In this case, the WebLingo expression can include escape codes. Escaping in OScript is accomplished by prefixing one of the following five codes: %L, %D, %S, %U, or %H. These codes are defined as follows:
Escape Code | Definition | Example |
%L | Literal Escaping indicates that characters should be interpreted literally. | If you declare the following string:
;string x = <b>Hello</b> The default output would be:<b>Hello</b> But if you escape the value of x as "'%Lx'", the output becomes: Hello |
%D | Double-quote Escaping indicates that a double quote (" ) should be escaped. | If you declare the following string:
;string x = 'xxx"yyy' The default output would be: xxx"yyy But if you escape the value of x as "'%Dx'", the output becomes: xxx\"yyy |
%S | Single-quote Escaping indicates that a single quote (" ) should be escaped. | If you declare the following string:
;string x = "C'est" The default output would be: C'est But if you escape the value of x as "'%Sx'", the output becomes: C\'est |
%U | URL Escaping indicates that a character should be escaped to URL format. Nonalphanumeric characters are converted into URL hexadecimal sequences, spaces into the plus ("+") character. | If you declare the following string:
;string x = "http://www.opentext.com/livelink?func=admin.index" The default output would be: http://www.opentext.com/livelink?func=admin.index But if you escape the value of x as "'%Ux'", the output becomes: http%3A%2F%2Fwww%2Eopentext%2Ecom%2Flivelink%3Ffunc%3Dadmin%2Eindex |
%H | HTML Escaping indicates that a character should be escaped to HTML format. Special characters, such as greater-than, less-than, and ampersand, are converted into their HTML equivalent. | If you declare the following string:
;string x = "<Hello>" The default output would be: <Hello> But if you escape the value of x as "'%Hx'", the output becomes: <Hello> |