Skip to content

Instantly share code, notes, and snippets.

@szampardi
Created February 2, 2023 15:11
Show Gist options
  • Save szampardi/5cd09197b28b5e34ce28566389508058 to your computer and use it in GitHub Desktop.
Save szampardi/5cd09197b28b5e34ce28566389508058 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
_lang=nato
while getopts ":l:" opt; do
case "${opt}" in
l) _lang="${OPTARG}" ;;
esac
done
shift $((OPTIND - 1))
case "${_lang}" in
it* | IT*) # https://it.wikipedia.org/wiki/Alfabeto_telefonico_italiano
declare -A CHART=(
["a"]="ancona" ["b"]="bari" ["c"]="como"
["d"]="domodossola" ["e"]="empoli" ["f"]="firenze"
["g"]="genova" ["h"]="hotel" ["i"]="imola"
["j"]="jolly" ["k"]="kappa" ["l"]="livorno"
["m"]="milano" ["n"]="napoli" ["o"]="otranto"
["p"]="palermo" ["q"]="quarto" ["r"]="roma"
["s"]="savona" ["t"]="torino" ["u"]="udine"
["v"]="venezia" ["w"]="washington" ["x"]="xilofono"
["y"]="ipsilon" ["z"]="zara"
["1"]="UNO" ["2"]="DUE" ["3"]="TRE"
["4"]="QUATTRO" ["5"]="CINQUE" ["6"]="SEI"
["7"]="SETTE" ["8"]="OTTO" ["9"]="NOVE"
["0"]="ZERO" ["!"]="punto esclamativo" ["?"]="punto interrogativo"
["#"]="cancelletto" ["&"]="e commerciale" ["+"]="piu'"
["-"]="meno" ["|"]="barra verticale" ["$"]="dollaro"
["%"]="percento" ["_"]="trattino basso" ["/"]="slash"
['\']="backslash" ["*"]="asterisco" ["@"]="chiocciola"
["="]="uguale" ["("]="apri parentesi" [")"]="chiudi parentesi"
["["]="apri parentesi quadra" ["]"]="chiudi parentesi quadra" ["{"]="apri parentesi graffa"
["}"]="chiudi parentesi graffa" ["."]="punto" [","]="virgola"
[";"]="punto e virgola" [":"]="due punti"
)
;;
nato | NATO | *) # https://it.wikipedia.org/wiki/Alfabeto_fonetico_NATO
declare -A CHART=(
["a"]="alpha" ["b"]="bravo" ["c"]="charlie"
["d"]="delta" ["e"]="echo" ["f"]="foxtrot"
["g"]="golf" ["h"]="hotel" ["i"]="india"
["j"]="juliet" ["k"]="kilo" ["l"]="lima"
["m"]="mike" ["n"]="november" ["o"]="oscar"
["p"]="papa" ["q"]="quebec" ["r"]="romeo"
["s"]="sierra" ["t"]="tango" ["u"]="uniform"
["v"]="victor" ["w"]="whiskey" ["x"]="x-ray"
["y"]="yankee" ["z"]="zulu"
["1"]="ONE" ["2"]="TWO" ["3"]="THREE"
["4"]="FOUR" ["5"]="FIVE" ["6"]="SIX"
["7"]="SEVEN" ["8"]="EIGHT" ["9"]="NINE"
["0"]="ZERO" ["!"]="exclamation" ["?"]="questionmark"
["#"]="hash" ["&"]="ampersand" ["+"]="plus"
["-"]="dash" ["|"]="pipe" ["$"]="dollar"
["%"]="percent" ["_"]="underscore" ["/"]="slash"
['\']="backslash" ["*"]="asterisk" ["@"]="at"
["="]="equals" ["("]="left parenthesis" [")"]="right parenthesis"
["["]="square bracket open" ["]"]="square bracket closed" ["{"]="brace open"
["}"]="brace closed" ["."]="dot" [","]="comma"
[";"]="semicolon" [":"]="colon"
)
;;
esac
# add uppercase equivalents
for _c in "${!CHART[@]}"; do
CHART["${_c^^}"]="${CHART[${_c}]^^}"
done
if [[ ! -t 0 ]]; then
INPUT="$(timeout 30 tee)"
else
INPUT="${*}"
fi
for ((i = 0; i < ${#INPUT}; i++)); do
_c="${INPUT:i:1}"
case "${_c}" in
" ") printf '\t' ;;
*) printf '[%s]%s ' "${_c}" "${CHART["${_c}"]}" ;;
esac
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment