17 lines
465 B
Plaintext
17 lines
465 B
Plaintext
create buffer 32000 allot
|
|
|
|
{{
|
|
create bit 5 allot
|
|
: extract ( $c-$a ) drop @+ bit ! @+ bit 1+ ! bit ;
|
|
: render ( $c-$n )
|
|
dup '+ = [ drop 32 ] ifTrue
|
|
dup 13 = [ drop 32 ] ifTrue
|
|
dup 10 = [ drop 32 ] ifTrue
|
|
dup '% = [ extract hex toNumber decimal ] ifTrue ;
|
|
: <decode> ( $-$ ) repeat @+ 0; render ^buffer'add again ;
|
|
---reveal---
|
|
: decode ( $- ) buffer ^buffer'set <decode> drop ;
|
|
}}
|
|
|
|
"http%3A%2F%2Ffoo%20bar%2F" decode buffer puts
|