There seems to be many behavior changes to sensetalk in Eggplant Functional Version 22.0
Parentheses () for lists are changed to Brackets []
(existing code does not seem to be affected.)
Empty property list defined with “(:)” might need to be updated to {:}
(existing code using “(:)” not working with replace properties command?)
Old variables defined with set to a new now creates a property list?
I’m sure we will find more…
I’ve also come across changes as well as new added codes for databases, time zones, dates etc
Also noticing behavior patterns as well. Also going the extra mile to finding more of these changes as we go along.
My major concern was DAI’s latest release which bugged me a lot with a couple of things as well.
Yes, it’s recommended to use square brackets [ ] for lists and curly braces { } for property lists. This matches the style used by many other languages, and is now the “standard” in SenseTalk. The editor corrects your parentheses for you while you are typing, and can also be set to standardize entire scripts whenever they are edited. This is an option in the preferences.
I’m not sure what you mean by “Old variables defined with set to a new now creates a property list?” – can you give an example?
I don’t use this format, but found some old code where a variable was "set to a new "
I think the “a new” sets up a property list.
It looks like they used it correctly? like:
"set var to a new ‘PropList’ with {Key:value}
But other places it was just :
"set var to a new ‘value’ "
which originally seemed to just default to:
"set var to ‘value’ "
I think the new behavior changes the default to an empty property list named ‘value’ ?
Also, found scripts that had an “initialize” handle which use to get run when and handle in the script is called. Now it does not seem to run automatically, and needs to be called like a handle?
Found that the “split” function now returns the data as a true “list”, not a comma delimited string.
Old code did a split on a string, and then a search/replace on the same string variable. It used to work, but now the variable is “item1, item2, item3… and so on” so the search/replace does not work. This old code was likely incorrect, but worked. It is actually easier to to work with the data as a list anyway.
Just something that changed with the new version. I think some changes were actually in ver 21.0, but we skipped that version.
The new
keyword is described here: Objects | EPF Docs
None of this functionality has changed recently. If you have an actual script that appears to be acting differently than it used to, we can look into it.
The split
function has always returned a list. Sometimes it can be confusing to know whether you have an actual list or not. The is a list
operator can be used to tell if you have a list, to help with debugging. But I don’t believe anything related to split
changed recently.