'''[xk2600]''' I wanted the ability to provide a constant "keyed" string mechanism (similar to enums) and liked this concept... I need to convert it into a proc which can create these on demand. The premise is simple, dynamically write a proc that contains a switch which based on a single arg returns a result. **Static Constant Enumerated Strings** ====== namespace eval httpd [list proc status {code} {switch -exact -- $code} ] foreach {code message} { 100 Continue 101 {Switching Protocols} 102 Processing 200 OK 201 Created 202 Accepted 203 {Non-Authoritative Information} 204 {No Content} 205 {Reset Content} 206 {Partial Content} 207 Multi-Status 208 {Already Reported} 226 {IM Used} 300 {Multiple Choices} 301 {Moved Permenantly} 302 Found 303 {See Other} 304 {Not Modified} 305 {Use Proxy} 306 {Switch Proxy} 307 {Temporary Redirect} 308 {Permenant Redirect} 400 {Bad Request} 401 Unauthorized 402 {Payment Required} 403 Forbidden 404 {Not Found} 405 {Method Not Allowed} 406 {Not Acceptable} 407 {Proxy Authentication Required} 408 {Request Timeout} 409 Conflict 410 Gone 411 {Length Required} 412 {Precondition Failed} 413 {Payload Too Large} 414 {URI Too Long} 415 {Unsupported Media Type} 416 {Range Not Satisfiable} 417 {Expectation Failed} 421 {Misdircted Request} 422 {Unprocessable Entity} 423 Locked 424 {Failed Dependancy} 426 {Upgrade Required} 428 {Precondition Required} 429 {Too Many Requests} 431 {Request Header Fields Too Large} 451 {Unavailable For Legal Reasons} 500 {Internal Server Error} 501 {Not Implemented} 502 {Bad Gateway} 503 {Service Unavailable} 504 {Gateway Time-out} 505 {HTTP Version Not Supported} 506 {Variant Also Negotiates} 507 {Insufficient Storage} 508 {Loop Detected} 510 {Not Extended} 511 {Network Authentication Required} } { # This appends case + body onto the switch in the proc body # eventually resulting in a proc that looks like this: # proc ::httpd::status {code} { # switch -exact -- $code \ # 100 { # return {100 {continue}} # } \ # ... # 511 { # return {511 {Network Authentication Required}} # } # } # # ...and is pretty slick if I say so myself! namespace eval httpd [list proc status {code} \ [concat [info body ::httpd::status] \ $code \ [list [list return [list $code $message]]] \ ] ] } ===== Enter page contents here, upload content using the button above, or click cancel to leave it empty. <>Enter Category Here