Posted to tcl by kostix at Sun Mar 11 15:47:08 GMT 2007view pretty

proc histool::sort_jids3 {jids args} {
	set order {server node resource}
	foreach {opt val} $args {
		switch -- $opt {
			-order { set order $val }
			default { error "invalid option: $opt" }
		}
	}

	set norder {}
	foreach part {node server resource} {
		lappend norder [lsearch $order $part]
	}

	set items {}
	foreach jid $jids {
		set parts [list \
			[node_from_jid $jid] \
			[server_from_jid $jid] \
			[resource_from_jid $jid] \
		]
		set ordered [list \
			[lindex $parts [lindex $norder 0]] \
			[lindex $parts [lindex $norder 1]] \
			[lindex $parts [lindex $norder 2]] \
		]
		set pat [join $ordered \u0000]]
		lappend items [list $pat $jid]
	}

	set sorted {}
	foreach item [lsort -index 0 $items] {
		lappend sorted [lindex $item 1]
	}

	set sorted
}