[REBOL] From "C" to Rebol: - decode-cgi-special/Object Methods
From: tim:johnsons-web at: 3-Aug-2001 9:59
It looks like the previous transmission on this topic
munched
the code. Here it is again:
To recap:
In the meantime, have a look at what I have below. Implementation - wise,
these are "methods" for a large object .... they are evaluated
by a "constructor"
; "helper" functions:
no-data?: func[arg][either any[none? arg arg = false empty? arg]
[return true][return false]]
has-data?: func[arg][either any[none? arg arg = false empty? arg]
[return false][return true]]
; data "fetch" method:
read-data: func[/local tmp stdin dstr] [
either system/options/cgi/request-method = "POST"[
either (tmp: to-integer
load any[system/options/cgi/content-length "0"])> 0[
stdin: make string! tmp ; allocate storage space
read-io system/ports/input stdin tmp
return stdin
][none] ; data string empty
][;OR
dstr: system/options/cgi/query-string
either has-data? dstr[dstr][none]
]; end either
]; end read-data --------------------
; parses data-string into a block of alternating
; names and values. Both names and values are dehexed
decode-data: func[/local cgi-form data-string][
either data-string: read-data[
data-string: dehex replace/all data-string "+" " "
pairs: (length? pair-list: parse/all data-string "&=") / 2
][none]
]; end decode-data
; I hope thats more readable.
tim