item delimiter defaults
Mike Kerner
MikeKerner at roadrunner.com
Thu Nov 21 14:37:15 EST 2013
You might also be able to make it a default for a particular stack, which
would then go away for substacks, libraries, etc.
On Thu, Nov 21, 2013 at 2:31 PM, Alex Tweedly <alex at tweedly.net> wrote:
>
> I suspect that a global property (even with conservative defaults) would
> be a source of great problems to library / custom control authors.
>
> How about a different approach - add an optional phrase to the 'item'
> keyword, such as "by character", e.g.
>
> put item 1 by COMMA of tColor into tRed
>
> put item 3 by TAB of myVar into tCell3
>
> Come to think of it, while I'm asking for some features to do with items,
> I would really like
>
> put the items of myVar into t1, t2, t3
>
> which would split out the items into multiple variables - with the last
> named var getting all remaining items.
>
> Thus,
> put "a,b,c,d,e" into tAll
> put the items of tAll into t1, t2, t3
> would result in
> t1 == a
> t2 == b
> t3 == c,d,e
>
> And of course you could also do
> put the items by COMMA of Color into tRed, tGreen, tBlue
>
>
> -- Alex.
>
>
> On 21/11/2013 18:45, J. Landman Gay wrote:
>
>> On 11/21/13 12:19 PM, Bill Vlahos wrote:
>>
>> The only problem I see in making this change now is that it will
>>> break some apps. If I give or get a stack from someone who defaults
>>> to a different delimiter things will break in funny ways.
>>>
>>> Perhaps there can be a statement in some standard place such as
>>> preOpenStack like “set the itemDelimiter to XXX” or a stack Custom
>>> Property. LiveCode IDEs after a certain date will read and set it and
>>> if it isn’t there the current behavior of comma will be used as the
>>> default. This would provide backwards compatibility without much
>>> overhead.
>>>
>>
>> I use commas all the time, and so does the engine. The default delimiter
>> for all native properties is comma (colors, rects, etc.) and changing it
>> universally would break almost all legacy stacks.
>>
>> However, that said, I think the original request was for the developer to
>> be able to specifically set a global delimiter, which would be the correct
>> way to implement this. The default global delimiter would be a comma, as it
>> is now. But there would be a command to change that, which authors could
>> use if they wanted it.
>>
>> set the globalDelimiter to tab
>>
>> That could be executed anywhere in any script and would change the global
>> propery until it was changed again. Legacy stacks would remain unaffected
>> because the engine default would be comma as it is now.
>>
>> I do think it will cause the same issues that we had in HyperCard, where
>> setting the itemDelimiter was global instead of handler-specific. I
>> welcomed the revised use of item delimiters back in MetaCard because I no
>> longer had to bracket every change with saving the old one, using the new
>> one, and then restoring the old one. Keeping the delimiter handler-specific
>> was a godsend that made scripting much easier.
>>
>> Providing a way to implement this older HC behavior could cause the same
>> issues. Every time you want to extract the components of a rectangle, a
>> color, or any other native property, you will have to do this:
>>
>> put the itemDelimiter into tOldDel
>> set the itemDelimiter to comma
>> put item 1 of tColor into tRed
>> set the itemDelimiter to tOldDel
>>
>> That's what we had to do in HC and I guarantee it's a pain in the patoot.
>>
>>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
--
On the first day, God created the heavens and the Earth
On the second day, God created the oceans.
On the third day, God put the animals on hold for a few hours,
and did a little diving.
And God said, "This is good."
More information about the use-livecode
mailing list