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
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to