array mystery

Peter M. Brigham, MD pmbrig at
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


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
      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
         if pFullData then
            put spaces(pDimension * 3) & theKey & ":" \
                   && pArray[theKey] & cr after theText
            put pArray[theKey] into tElement
            if the number of lines of tElement > 1 then
               put " ..." into tTrailer
               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