Site logo

Inserting text and special characters at the insertion point

Q: I'm trying to insert some text, followed by a column break, followed by some more text at the insertion point. I'm working in Javascript. The following doesn't work.

 myIP.contents = "some text" + SpecialCharacters.columnBreak + "some more text";

because Javascript is just ends up converting SpecialCharacters.columnBreak into a number and inserting the number into the string. How do I get this to work?

A:. Very interesting problem.
I don't know a direct assignment solution in that particular case, because SpecialCharacters.columnBreak happens to belong to the set of special characters that have no univocal code point. Indeed, the underlying UTF16 code is U+000D (i.e. "\r") which is also assigned to other character breaks (end of paragraph, frame break, etc.) So you cannot use something like

myIP.contents = "some text" + "\r" + "some more text"; // won't work

Note that this is a special case. Most of the time you can reduce the SpecialCharacters enum into the corresponding "\uHHHH" code. (More on ID special character codes here: https://www.indiscripts.com/post/2009/07/idcs4-special-characters)

So, in order to handle such equivocal SpecialCharacters codes, it seems necessary to explicitly send the single command someIP.contents=SpecialCharacters.columnBreak at some point. Which leads to split the insertion process like so:

// The text you want to insert as an array  // (isolating the special char enum.)  // ---  var a = ["some text", SpecialCharacters.columnBreak, "some more"];  for( var i=a.length ; i-- ; myIP.insertionPoints[0].contents=a[i] );