URL decoding: Difference between revisions

From Rosetta Code
Content deleted Content added
Rdm (talk | contribs)
: is %3A
add language: Retro
Line 14: Line 14:


[[Category:String manipulation]]
[[Category:String manipulation]]


=={{header|Retro}}==
This is provided by the '''casket'''' library (used for web app development).

<lang Retro>
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</lang>

Revision as of 09:18, 17 June 2011

URL decoding is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

The task is to provide a function or mechanism to convert a url encoded string into its original unencoded form.

This task is the reverse of URL decoding.

Example

The encoded string "http%3A%2F%2Ffoo%20bar%2F" should be reverted to the unencoded form "http://foo bar/"

See also

URL encoding


Retro

This is provided by the casket' library (used for web app development).

<lang Retro> 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</lang>