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

  1. proc histool::sort_jids3 {jids args} {
  2. set order {server node resource}
  3. foreach {opt val} $args {
  4. switch -- $opt {
  5. -order { set order $val }
  6. default { error "invalid option: $opt" }
  7. }
  8. }
  9.  
  10. set norder {}
  11. foreach part {node server resource} {
  12. lappend norder [lsearch $order $part]
  13. }
  14.  
  15. set items {}
  16. foreach jid $jids {
  17. set parts [list \
  18. [node_from_jid $jid] \
  19. [server_from_jid $jid] \
  20. [resource_from_jid $jid] \
  21. ]
  22. set ordered [list \
  23. [lindex $parts [lindex $norder 0]] \
  24. [lindex $parts [lindex $norder 1]] \
  25. [lindex $parts [lindex $norder 2]] \
  26. ]
  27. set pat [join $ordered \u0000]]
  28. lappend items [list $pat $jid]
  29. }
  30.  
  31. set sorted {}
  32. foreach item [lsort -index 0 $items] {
  33. lappend sorted [lindex $item 1]
  34. }
  35.  
  36. set sorted
  37. }