[TIP] Sorting by ValueList and synchronized sorting

Phil Davis revdev at pdslabs.net
Sat Jun 14 15:28:32 EDT 2008


Thanks Hugh! This is quite cool.
Phil Davis


Hugh Senior wrote:
> Have you needed to sort lists by a value list or synchronize different 
> lists, but thought it not easily do-able in Rev? You may find the 
> following tips useful.
>
> In a field, type some lines where the first word is a random day of 
> the week, then...
>
> on mouseUp
>  sort lines of fld 1 by valueList(word 1 of each)
> end mouseUp
>
> function valueList what
>  put "Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday" into 
> tList
>  return itemOffset(what,tList)
> end valueList
>
> Of couse you could also apply any valid chunking expression such as 
> (word 2 to -1 of item 3 of each), apply the valueList sort to 
> variables as well as fields, store multiple valueLists as re-usable 
> custom properties, make the valueList conditional upon other factors 
> and so on. The point is that the built-in sort keys can be extended to 
> include your own preferential order.
>
> Applying the same logic above to multiple fields (or indeed 
> variables), the following implements parallel sorting of linked 
> fields, keeping the lists synchronized (based on an old HyperCard 
> script by Brett Sher)...
>
> Create 3 fields called 'data1', 'data2' and 'data3'. Add lines of text 
> into each field, for example a list of first names, last names, ages, 
> then...
>
> on mouseUp
>  sortBy "data1" --| Sort by first name
> end mouseUp
>
> local lLineCounter,lKeyData
> on sortBy keyField
>  put fld keyField into lKeyData
>  put "data1,data2,data3" into dataFields --| fill in your own field 
> names here
>  repeat with i = 1 to the number of items of dataFields
>    put 0 into lLineCounter
>    sort lines of fld (item i of dataFields) by key()
>  end repeat
> end sortBy
>
> function key
>   add 1 to lLineCounter
>   return line lLineCounter of lKeyData
> end key
>
> Hope some of you may find the above helpful.
>
>
> /H
>
> Hugh Senior
> www.ssBk.co.uk, Home of the Scripter's Scrapbook

-- 
Phil Davis

PDS Labs
Professional Software Development
http://pdslabs.net




More information about the use-livecode mailing list