Nested strings and special
characters in JavaScript for DataWindow object properties
Different processing by language and
DataWindow
JavaScript uses different characters from those used within the
DataWindow to delimit strings and identify special characters. For
DataWindow object properties, several levels of nested strings and two
types of delimiter can create a complicated expression.
In JavaScript, strings are delimited by double quotes and the
escape character in strings is the backslash (). The escape character
allows you to include double quotes and special characters within a
string. The DataWindow can use either double or single quotes to
delimit strings and uses tilde (~) as an escape character.
Because some parts of the string are parsed by the language and
some by the DataWindow, strings passed to the DataWindow often use
both types of escape character. The one to use depends on whether the
DataWindow or the external language will evaluate the character. The
external language deals with the outer string and converts escape
sequences to the corresponding special characters. Nested strings are
dealt with by the DataWindow parser.
Guidelines
Observe these guidelines for each type of character:
-
Special characters use the language escape character. Tabs,
newlines, and carriage returns are ,
, -
Nested double quotes require the language escape character
() so they won’t be interpreted as the closure of the opening
double quote. Depending on the level of nesting, they may also
require the DataWindow escape character (~). -
Single quotes for nested strings do not need the language
escape character, but depending on the level of nesting they may
need the DataWindow escape character. -
Tildes are specified in odd-numbered groups. They do not
interact with the language escape character in counting the number
of escape characters used.
Examples
Both of these JavaScript examples are valid ways of nesting a
string:
|
1 2 |
dw_1.Modify("DataWindow.Crosstab.Values="empname""); dw_1.Modify("DataWindow.Crosstab.Values='empname'"); |
The following three JavaScript statements specify the same
string. They show a string with three levels of nesting using
different combinations of escape characters and quote types. In the
first example, note the escaping of the inner quote with a tilde for
the DataWindow and a backslash for the language:
|
1 2 3 4 5 |
dw_1.Modify("emp_id.Color="16777215 If (emp_status=~"A~",255,16777215)""); dw_1.Modify("emp_id.Color="16777215 If (emp_status='A',255,16777215)""); dw_1.Modify("emp_id.Color='16777215 If (emp_status="A",255,16777215)'"); |
The corresponding example in PowerBuilder is:
|
1 |
dw_1.Modify("emp_id.Color = ~"16777215 ~t If (emp_status=~~~"A~~~",255,16777215)~"") |
Special use of tilde
A special case of specifying tildes involves the
EditMask.SpinRange property, whose value is two numbers separated by a
tilde (not an escape character, simply a tilde). In code, the value is
in a nested string and needs a tilde escape character. The two tildes
are interpreted as a single tilde when parsed by the
DataWindow:
|
1 |
dw_1.modify("benefits.EditMask.SpinRange='0~~10'"); |