home *** CD-ROM | disk | FTP | other *** search
/ Practical Programming in Tcl & Tk (4th Edition) / TCLBOOK4.BIN / pc / exsource.old / 13_3.tcl < prev    next >
Text File  |  2003-04-15  |  820b  |  42 lines

  1. #
  2. # Example 13-3
  3. # Mapping form data onto procedure arguments.
  4. #
  5.  
  6. # cmd is the name of the procedure to invoke
  7. # form is an array containing form values
  8.  
  9. set cmdOrig $cmd
  10. set params [info args $cmdOrig]
  11.  
  12. # Match elements of the form array to parameters
  13.  
  14. foreach arg $params {
  15.     if {![info exists form($arg)]} {
  16.         if {[info default $cmdOrig $arg value]} {
  17.             lappend cmd $value
  18.         } elseif {[string equal $arg "args"]} {
  19.             set needargs yes
  20.         } else {
  21.             lappend cmd {}
  22.         }
  23.     } else {
  24.         lappend cmd $form($arg)
  25.     }
  26. }
  27. # If args is a parameter, then append the form data
  28. # that does not match other parameters as extra parameters
  29.  
  30. if {[info exists needargs]} {
  31.     foreach {name value} [array get form] {
  32.         if {[lsearch $params $name] < 0} {
  33.             lappend cmd $name $value
  34.         }
  35.     }
  36. }
  37. # Eval the command
  38.  
  39. set code [catch $cmd result]
  40.  
  41.  
  42.