19 lines
498 B
Text
19 lines
498 B
Text
|
|
link hexcvt
|
||
|
|
|
||
|
|
procedure main()
|
||
|
|
write("text = ",image(u := "http://foo bar/"))
|
||
|
|
write("encoded = ",image(ue := encodeURL(u)))
|
||
|
|
end
|
||
|
|
|
||
|
|
procedure encodeURL(s) #: encode data for inclusion in a URL/URI
|
||
|
|
static en
|
||
|
|
initial { # build lookup table for everything
|
||
|
|
en := table()
|
||
|
|
every en[c := !string(~(&digits++&letters))] := "%"||hexstring(ord(c),2)
|
||
|
|
every /en[c := !string(&cset)] := c
|
||
|
|
}
|
||
|
|
|
||
|
|
every (c := "") ||:= en[!s] # re-encode everything
|
||
|
|
return c
|
||
|
|
end
|