REBOL [
Author: "Jeff Kreis"
Email: jeff@rebol.com
Title: "Sorting nested blocks"
File: %sort-nests.r
Date: 16-Jun-1999
Purpose: {
Sort a block of blocks on different
fields.
}
Category: [db misc 3]
]
fields: [name legs eyes web-site]
creature-db: [
["Beetle" 6 2 http://www.beetle.com]
["Fly" 6 26 http://www.fly.com]
["Aardvark" 4 2 http://www.aardvark.com]
["Spaz" 3 14 http://spaz.com]
]
list-it: func ["Column printer" i [integer!]][
foreach creature creature-db [
foreach :fields creature [
foreach item [name legs eyes web-site] [pad get item]
print ""
]
]
]
pad: func [arg][prin arg loop absolute (length? form arg) - 10 [prin " "]]
repeat i length? fields [
sort/compare creature-db func [a b][(pick a i) < pick b i]
print ["^/;---Soring on field" i newline]
list-it i
]