19 lines
498 B
Plaintext
19 lines
498 B
Plaintext
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
|