array mystery
Peter M. Brigham, MD
pmbrig at gmail.com
Sat May 12 12:10:24 EDT 2012
On May 10, 2012, at 5:49 PM, Bob Sneidar wrote:
> I just forwarded an email Trevor sent to the list some time ago with the code in it.
>
> Bob
>
>
> On May 10, 2012, at 2:34 PM, Peter M. Brigham, MD wrote:
>
>> It was apparently part of Trevor's sqlYoga, supposedly made available now as an opensource utility handler, but I can't find it. The Nabble archives show an "altPrintKeys()" function but the output is not a readable display of the structure of an array, it's designed for utility work in massaging arrays. I'd like to get hold of the original printKeys() handler somewhere. Where can I find it?
In case anyone else wants it, I'm posting below a slightly modified version of the function, renamed "displayArray" to distinguish it from the variants that Bob has posted for utility work. This version simply allows you to look at the contents of an array in outline form, which makes the structure of the array quite clear on inspection.
-- Peter
Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig
------
function displayArray @pArray, pFullData, pDimension
-- displays an array as an outline-style list
-- most useful for multidimensional arrays, to see the structure
-- if an element of the array contains more than one line,
-- the first line only will be displayed (less confusing to look at)
-- if you want to see the full data then pass pFullData = true
-- pDimension is an internally used parameter
-- pArray is referenced to avoid duplicating large arrays, but
-- the array is not altered by this function
-- call it like this: put displayArray(tArray) into fld "peruse"
-- requires spaces()
if pDimension is empty then put 0 into pDimension
if pFullData = empty then put false into pFullData
put the keys of pArray into theKeys
if line 1 of theKeys is a number then
sort theKeys numeric
else
sort theKeys
end if
repeat for each line theKey in theKeys
if pArray[theKey] is an array then
put spaces(pDimension * 3) & theKey & cr after theText
put pArray[theKey] into theTempArray
put displayArray(theTempArray, pFullData, pDimension + 1) after theText
else
if pFullData then
put spaces(pDimension * 3) & theKey & ":" \
&& pArray[theKey] & cr after theText
else
put pArray[theKey] into tElement
if the number of lines of tElement > 1 then
put " ..." into tTrailer
else
put empty into tTrailer
end if
put spaces(pDimension * 3) & theKey & ":" \
&& (line 1 of tElement) & tTrailer & cr after theText
end if
end if
end repeat
return theText
end displayArray
function spaces n
-- returns a string of n spaces
put "" into s
repeat n
put space after s
end repeat
return s
end spaces
More information about the use-livecode
mailing list