REBOL [
Title: "Rot-13"
Author: "Allen Kamp"
Email: allenk@powerup.com.au
Date: 21-Oct-1999
File: %rot-13.r
version: 1.0.1
Purpose: {To Encode and Decode Rot-13 strings}
Notes: {
Rotates Roman alphabet chars by 13 places. Case is preserved.
Used in Newsgroups to prevent accidental reading of content.
}
Usage: {To encode >> rot-13 "This is a test" == "Guvf vf n grfg"
To decode, just use rot-13 again >> rot-13 "Guvf vf n grfg" == "This is a test"
}
Category: [util 2]
]
rot-13: func [
{Converts a string to or from Rot-13}
data [any-string!]
/local scrambled rot-chars rot-char
][
rot-chars: {anabobcpcdqderefsfgtghuhivijwjkxklylmzmANABOBCPCDQDEREFSFGTGHUHIVIJWJKXKLYLMZM}
scrambled: copy ""
foreach char data [
if none? (rot-char: select/case rot-chars char) [rot-char: char]
insert tail scrambled :rot-char
]
return scrambled
]
; example
; print rot-13 "Rebol Rules"