Raven Examples - Morse Code

Morse Code

Script:

#!/usr/bin/raven 
 
'hello world' as $msg 
 
# map letters to codes 
group 
	'a' '.-'      'b' '-...'     'c' '-.-.'     'd' '-..'     'e' '.' 
	'f' '..-.'    'g' '--.'      'h' '....'     'i' '..'      'j' '.---' 
	'k' '.-.'     'l' '.-..'     'm' '--'       'n' '-.'      'o' '---' 
	'p' '.--.'    'q' '--.-'     'r' '.-.'      's' '...'     't' '-' 
	'u' '..-'     'v' '...-'     'w' '.--'      'x' '-..-'    'y' '-.--' 
	'z' '--..'    '1' '.----'    '2' '..---'    '3' '...--'   '4' '....-' 
	'5' '.....'   '6' '-....'    '7' '--...'    '8' '---..'   '9' '----.' 
	'0' '-----'   '.' '.-.-.-'   ',' '--..--'   ' ' '   '     'EOM' '.-.-.' 
hash as $letters 
 
# map codes to letters 
$letters values $letters keys combine as $codes 
 
' ' as space 
 
# convert text to morse 
define morse_encode use $msg 
	group $msg lower each chr 
		dup space != 
		if	$letters swap get 
	list space join 
 
# convert morse to text 
define morse_decode use $msg 
	group $msg '   ' split each 
		space split each 
			$codes swap get 
		space 
	join rtrim 
 
$msg morse_encode as $enc 
$enc morse_decode as $dec 
 
"%($enc)s\n" format print 
"%($dec)s\n" format print 

Result:

.... . .-.. .-.. ---   .-- --- .-. .-.. -.. 
hello world
Get Firefox!