Random but unique

Jim Hurley jhurley at infostations.com
Wed Jan 15 10:54:01 EST 2003


>
>Dar Scott <dsc at swcp.com> wrote:
>
>>  This command:
>>
>>  sort lines of ... by blahBlahBlah
>>
>>  gets a sort key by calling (virtually) this function on each line:
>>
>>  function sortKey each
>>      return blahBlahBlah
>>  end if
>>
>>  If I'm right, you should be able to do other interesting sorts.
>
>Right, and it works great. You can write a custom sort function that
>does just about anything you can think of. Here's an example. I had a
>list of contact info exported as a comma-delimited list of itemized lines:
>
>first,last,phone
>jacque,gay,724-1596
>bob,smith,123-1234
>mary,jones,345-6929
>john,doe,939-2939
>
>And I wanted to re-arrange the contents of each line so that the last
>name was first, followed by the first name, then the phone. This did it:
>
>local theCount,theRightOrder
>on dosort
>    put fld 1 into theData -- the original list
>    put "2,1,3" into theRightOrder -- the key line
>    repeat for each line l in theData
>      put 0 into theCount
>      sort items of l by mySort(each)
>      put l & return after theNewData
>    end repeat
>    put theNewData into fld 2
>end dosort
>
>function mySort
>    add 1 to theCount
>    return item theCount of theRightOrder
>end mySort
>
>You could alter this to sort data in one field based on the order in
>another field, or to use any arbitrary order you want. Lots of
>variations are possible.
>--
>Jacqueline Landman Gay         |     jacque at hyperactivesw.com
>HyperActive Software           |     http://www.hyperactivesw.com
>


This is awesome!

It will take me some time to digest this.

Jim Hurley



More information about the use-livecode mailing list