Simple Arrays

Jim Ault jimaultwins at yahoo.com
Mon Jan 11 16:25:29 EST 2010


One bit of shorter code would be deleting the function and using the  
two lines:

    set the lineDelimiter to char 1 of (pLineDel & cr)
    set the lineDelimiter to char 1 of (pItemDel & tab)


Jim Ault
Las Vegas


On Jan 11, 2010, at 12:24 PM, Phil Davis wrote:

> Thanks Dick - I hadn't thought about handling common cases  
> differently. Good idea!
>
> Phil
>
> On 1/11/10 12:10 PM, Dick Kriesel wrote:
>> On 1/10/10 1:25 PM, "Phil Davis"<revdev at pdslabs.net>  wrote:
>>
>>> The things some people do for fun...  ;-)
>>>
>> ... can make others want to get in on the fun, like by fixing  
>> something that
>> ain't broke.  Here's an elaboration on your idea that handles your  
>> sample
>> data more than twice as fast, primarily by avoiding the "do" for  
>> typical
>> cases.
>>
>> Thanks for the cue, Phil.
>> -- Dick
>>
>> <postscript_with_line_wraps>
>>
>> function table_split tTable,pLineDel,pItemDel
>>    filter tTable without empty
>>    set the lineDelimiter to coalesce(pLineDel,cr)
>>    set the itemDelimiter to coalesce(pItemDel,tab)
>>    switch number of items in line 1 of tTable - 1 -- number of  
>> dimensions
>>       case 1
>>          repeat for each line tLine in tTable
>>             put item 2 of tLine into tArray[item 1 of tLine]
>>          end repeat
>>          break
>>       case 2
>>          repeat for each line tLine in tTable
>>             put item 3 of tLine into tArray[item 1 of tLine][item 2  
>> of
>> tLine]
>>          end repeat
>>          break
>>       case 3
>>          repeat for each line tLine in tTable
>>             put item 4 of tLine into tArray[item 1 of tLine][item 2  
>> of
>> tLine][item 3 of tLine]
>>          end repeat
>>          break
>>       default
>>          repeat for each line tLine in tTable
>>             do "put last item of tLine into tArray["&   
>> replaceText(item 1 to
>> -2 of tLine,the itemDelimiter,"][")&  "]"
>>          end repeat
>>    end switch
>>    return tArray
>> end table_split
>>
>> function coalesce -- return the first non-empty parameter
>>    repeat with i = 1 to the paramCount
>>       if param(i) is not empty then
>>          return param(i)
>>       end if
>>    end repeat
>> end coalesce
>>
>> </postscript_with_line_wraps>
>>
>>
>>
>
> -- 
> Phil Davis







More information about the use-livecode mailing list