#!/usr/bin/env bash
sed -e 's/\([^-\.]\)\.-\.-\.-\([^-\.]\)/\1\.\2/g' \
    -e 's/\([^-\.]\)--\.\.--\([^-\.]\)/\1,\2/g' \
    -e 's/\([^-\.]\)\.\.--\.\.\([^-\.]\)/\1\?\2/g' \
    -e 's/\([^-\.]\)-\.-\.--\([^-\.]\)/\1!\2/g' \
    -e 's/\([^-\.]\)-\.\.-\.\([^-\.]\)/\1\/\2/g' \
    -e 's/\([^-\.]\)-\.--\.-\([^-\.]\)/\1(\2/g' \
    -e 's/\([^-\.]\)-\.--\.-\([^-\.]\)/\1)\2/g' \
    -e 's/\([^-\.]\)---\.\.\.\([^-\.]\)/\1:\2/g' \
    -e 's/\([^-\.]\)\.----\.\([^-\.]\)/\1''''\2/g' \
    -e 's/\([^-\.]\)-\.-\.-\.\([^-\.]\)/\1;\2/g' \
    -e 's/\([^-\.]\)-\.\.\.-\([^-\.]\)/\1=\2/g' \
    -e 's/\([^-\.]\)\.-\.\.-\.\([^-\.]\)/\1"\2/g' \
    -e 's/\([^-\.]\)\.\.\.-\.\.-\([^-\.]\)/\1\$\2/g' \
    -e 's/\([^-\.]\)\.--\.-\.\([^-\.]\)/\1\@\2/g' \
    -e 's/\([^-\.]\)\.-\([^-\.]\)/\1A\2/g' \
    -e 's/\([^-\.]\)-\.\.\.\([^-\.]\)/\1B\2/g' \
    -e 's/\([^-\.]\)-\.-\.\([^-\.]\)/\1C\2/g' \
    -e 's/\([^-\.]\)-\.\.\([^-\.]\)/\1D\2/g' \
    -e 's/\([^-\.]\)\.\([^-\.]\)/\1E\2/g' \
    -e 's/\([^-\.]\)\.\.-\.\([^-\.]\)/\1F\2/g' \
    -e 's/\([^-\.]\)--\.\([^-\.]\)/\1G\2/g' \
    -e 's/\([^-\.]\)\.\.\.\.\([^-\.]\)/\1H\2/g' \
    -e 's/\([^-\.]\)\.\.\([^-\.]\)/\1I\2/g' \
    -e 's/\([^-\.]\)\.---\([^-\.]\)/\1J\2/g' \
    -e 's/\([^-\.]\)-\.-\([^-\.]\)/\1K\2/g' \
    -e 's/\([^-\.]\)\.-\.\.\([^-\.]\)/\1L\2/g' \
    -e 's/\([^-\.]\)--\([^-\.]\)/\1M\2/g' \
    -e 's/\([^-\.]\)-\.\([^-\.]\)/\1N\2/g' \
    -e 's/\([^-\.]\)---\([^-\.]\)/\1O\2/g' \
    -e 's/\([^-\.]\)\.--\.\([^-\.]\)/\1P\2/g' \
    -e 's/\([^-\.]\)--\.-\([^-\.]\)/\1Q\2/g' \
    -e 's/\([^-\.]\)\.-\.\([^-\.]\)/\1R\2/g' \
    -e 's/\([^-\.]\)\.\.\.\([^-\.]\)/\1S\2/g' \
    -e 's/\([^-\.]\)-\([^-\.]\)/\1T\2/g' \
    -e 's/\([^-\.]\)\.\.-\([^-\.]\)/\1U\2/g' \
    -e 's/\([^-\.]\)\.\.\.-\([^-\.]\)/\1V\2/g' \
    -e 's/\([^-\.]\)\.--\([^-\.]\)/\1W\2/g' \
    -e 's/\([^-\.]\)-\.\.-\([^-\.]\)/\1X\2/g' \
    -e 's/\([^-\.]\)-\.--\([^-\.]\)/\1Y\2/g' \
    -e 's/\([^-\.]\)--\.\.\([^-\.]\)/\1Z\2/g' \
    -e 's/\([^-\.]\)-----\([^-\.]\)/\10\2/g' \
    -e 's/\([^-\.]\)\.----\([^-\.]\)/\11\2/g' \
    -e 's/\([^-\.]\)\.\.---\([^-\.]\)/\12\2/g' \
    -e 's/\([^-\.]\)\.\.\.--\([^-\.]\)/\13\2/g' \
    -e 's/\([^-\.]\)\.\.\.\.-\([^-\.]\)/\14\2/g' \
    -e 's/\([^-\.]\)\.\.\.\.\.\([^-\.]\)/\15\2/g' \
    -e 's/\([^-\.]\)-\.\.\.\.\([^-\.]\)/\16\2/g' \
    -e 's/\([^-\.]\)--\.\.\.\([^-\.]\)/\17\2/g' \
    -e 's/\([^-\.]\)---\.\.\([^-\.]\)/\18\2/g' \
    -e 's/\([^-\.]\)----\.\([^-\.]\)/\19\2/g'

exit 66

# morse - This generates morse code from ascii
# you can contact me at:
# --. .-. ..- .-.. --- ... .--.-. --. -- .- .. .-..
# .-.-.- -.-. --- --

# You can assign different dot and dash characters.
#dot=.
#dash=_

# generate ascii (from space to ~)
for ((i=32; i<127; i++)); do
	ascii="$ascii$(echo -en $(printf "%s%o" "\\" "$i"))"
done

# This is a list of chars that can be translated to morse.
# Note that SPACE is treated special.
eng=" .,?'!/():;=-\"\$@ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

# The morse code for each character in eng
mor=( # punctuation
	SPACE
	.-.-.- --..-- ..--.. .----. -.-.-- -..-. -.--.- -.--.-
	---... -.-.-. -...- -....- .-..-.
	...-..- .--.-.
	# alphabet A-Z
	.- -... -.-. -.. . ..-. --. .... .. .--- -.- .-.. -- -.
	--- .--. --.- .-. ... - ..- ...- .-- -..- -.-- --..
	# Numbers 0-9
	----- .---- ..--- ...-- ....-
	..... -.... --... ---.. ----. )

mor=( ${mor[@]/./${dot:-.}} )
mor=( ${mor[@]/-/${dash:--}} )

#while read -a line; do
while read line; do
	line=$(echo "${line}" | tr '[a-z]' '[A-Z]')
	for i in "${line[@]}"; do
		for (( j=0; j<${#i}; j++ )); do
			if  [ "${eng/${i:$j:1}/}" == "$eng" ]; then
				pos=${ascii%%${i:$j:1}*}
				eval char=\$\'\\$( printf "%o" "$(( ${#pos} ))" )\'
				[ "${eng/$char/}" == "$eng" ] && continue
			else
				char="${i:$j:1}"
			fi
			if [ "${char}" == " " ]; then
				printf "\n"
			else
				pos="${eng%%$char*}"
				printf "%s " "${mor[${#pos}]}"
			fi
		done
		printf " "
	done
	printf "\n"
done

# vim:set sr et ts=4 sw=4 ft=sh: / See Vim, :help 'modeline'
