added ascii to morse

This commit is contained in:
ThatGeekyWeeb 2021-09-02 18:32:45 -04:00
parent d7c660f233
commit 375297c232
1 changed files with 44 additions and 23 deletions

67
morsh
View File

@ -1,35 +1,56 @@
#!/bin/sh #!/bin/sh
# fuck you meeper # -. --- - .. -.-. . -- . -- . . .--. . .-.
# shellcheck disable=SC2086,SC1083,SC2154
# SC2086 - required for IFS replacement
# SC1083 - required for eval
# SC2154 - eval sets $cur
IFS=""; LANG=C IFS=""; LANG=C
# index's # index's
index="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" index="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" # 36 items
exb=".- -... -.-. -.. . ..-. --. .... .. .--- -.- .-.. -- -. --- .--. --.- .-. ... - ..- ...- .-- -..- -.-- --.. .---- ..--- ...-- ....- ..... -.... --... ---.. ----. -----" indexl="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" # lowercase index for ascii
exb=".-:-...:-.-.:-..:.:..-.:--.:....:..:.---:-.-:.-..:--:-.:---:.--.:--.-:.-.:...:-:..-:...-:.--:-..-:-.--:--..:.----:..---:...--:....-:.....:-....:--...:---..:----.:-----"
# I live in pain ma() {
fresolve() {
lre ${index} "$2"
}
lre() {
eval letter=\${$#} eval letter=\${$#}
n=1; while [ $n -le 36 ]; do eval cur=\${$letter}; printf '%s' "$cur"
case "$letter" in
"$n") eval cur=\${$n}; printf '%s' "$cur"
esac
: $((n+=1))
done
} }
am() {
IFS=""
eval letter=\${$#};
[ $letter -gt 36 ] && : $((letter-=36))
eval cur=\${$letter}; printf '%s ' "$cur"
}
while read -r p || [ -n "$p" ]; do while read -r p || [ -n "$p" ]; do
p=${p# }; p=${p% } p=${p# }; p=${p% }
n1="0"; IFS=" "; for i in ${p}; do case "$p" in
for ii in $exb; do -*|.*)
: $((n1+=1)); # for morse to ascii
case "$ii" in n1="0"; IFS=": "; for i in ${p}; do
"$i") fresolve "$ii" "$n1" for ii in $exb; do
esac : $((n1+=1));
done case "$ii" in
n1=0 "$i") ma ${index} "$n1"
done esac
done
n1=0
done ;;
*)
# ascii to morse
while [ "$p" ]; do
next="${p#?}"; # ${p%$next} is the current letter
IFS=":"; na="0"; for ai in ${index} ${indexl}; do
# echo $ai
: $((na+=1))
case "$ai" in
"${p%$next}") am $exb $na; break;;
esac
done
na=0
p="$next"
done
;;
esac
done # stdin read; fuck you done # stdin read; fuck you
echo echo