Thanks to Brian and Jacque, who supplied the key piece of information that the docs don't make clear. The Rev dictionary vaguely says "To create a custom sort order, use the each keyword to pass each line or item to a custom function. The value returned by the function is used as the sort key for that line or item." Brian and Jacque put it much more clearly:

On Apr 20, 2006, at 12:43 PM, Brian Yennie wrote:
See if this helps - the idea is you need your function to return the position you want that item in.

On Apr 20, 2006, at 12:55 PM, J. Landman Gay wrote:

The way it is now, termOrderSort is returning a number from the item list (such as 259), and the lines will sort numerically using those numbers. What you want is for "259" to be returned as "1" and "26" to be returned as "2", etc. Then the sort works.
...

Using "word 1 of each" sends the actual number in your raw data to the sort function. The sort function gets the item offset of that number from the sort order list. It returns that offset as an integer that will force the data to sort in the proper order; that is, "259" becomes "1", etc.


I only had to make a minor change for it to work properly after their suggestions:

local lSortOrder -- this is the only local you need

on updateList
  put the rawLessonData of fld "vocablist" into tRawData
  put "259,26,110,111,272,314,149,250,54" into lSortOrder
  sort lines of tRawData by termOrderSort(word 1 of each)

  -- do stuff with the sorted list
end updateList

function termOrderSort tNum
    set the wholeMatches to true ## otherwise '7' matches, '267', etc.
  return itemoffset(tNum, lSortOrder) -- this returns "1,2,3,4,5,etc"
end termOrderSort

Thanks for the help!

Devin

Devin Asay
Humanities Technology and Research Support Center
Brigham Young University

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to