von dp am 23.August 98 um 18:11:15:
zu: compare lists von dp am 14.Februar 97 um 20:42:28:
Director 6 still has no function to merge lists, despite many posts asked for.
In short, merging (concatenating) lists is making one list out of 2 or more:
[ 1, #lira ] and [ "=", [ 0.001, "SFr" ] ] become
[1, #lira, "=" [ 0.001, "SFr" ] ]
OK, I recently said "no unnecessary keywords, please", now I have to pay for:
Here is the handler.
It works EVEN WITH HUGE LISTS, i.e., length( string( hugeList ) ) > 32767.
That's the reason why I did it (not my joking about too much keywords),
you will see more clarity in this point in the following posts (grr!).
Call this function with the syntax:
myMergedList = mergeLists( list1, list2, ... )
--------------------------------------------------------------------------
on mergeLists
-- Merges lists of the same type into one list.
if listP( param( 1 ) ) then
if the paramCount = 1 then return param( 1 )
set newList = duplicate( param( 1 ) )
set listType = ilk( newList )
else
alert "ERROR in handler mergeLists: First argument is not a list."
return VOID
end if
repeat with i = 2 to the paramCount
if not( ilk( param( i ) ) ) = listType then
alert "ERROR in handler mergeLists: Argument" && i &&
"is not of the same list type as argument 1."
return VOID
end if
if listType = #proplist then
repeat with j = 1 to count( param( i ) )
addProp( newList, getPropAt( param( i ), j ), getAt( param( i ), j ) )
end repeat
else
repeat with j = 1 to count( param( i ) )
add( newList, getAt( param( i ), j ) )
end repeat
end if
end repeat
return newList
end mergeLists
--------------------------------------------------------------------------
Andreas
D. Plänitz