Raven Examples - Morse Code
Morse CodeScript:
#!/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
|