summaryrefslogtreecommitdiff
path: root/decperc
blob: a19ed95801b658a89d3084676fdbf6d0b1de4e68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/zsh

dec_into_perc () {
    dec="$1"
    # duplicating code, don't care
    if echo "$dec" | grep -qE '^(-?[0-9]+\.[0-9]+|-?[0-9]|\.[0-9]+)$'; then
        percent="$( echo "$dec * 100" | bc -l )"
        echo "${percent}%"
    else
        echo "Error: not a decimal number" >&2
        exit 1
    fi
}

perc_into_dec () {
    perc="$1"
    # duplicating code, don't care
    if echo "$perc" | grep -qE '^(-?[0-9]+\.[0-9]+%|-?[0-9]+%|\.[0-9]+%)$'; then
        dec="{$perc%?}"
        dec="$( echo "$dec / 100" | bc -l )"
        echo "$dec"
    else
        echo "Error: not a percent" >&2
        exit 1
    fi
}

echo "$1" | grep -qE '^(-?[0-9]+\.[0-9]+|-?[0-9]|\.[0-9]+|-?[0-9]+\.[0-9]+%|-?[0-9]+%|\.[0-9]+%)$' &&
  len=${#1} &&
  [[ "${1:len-1:1}" == "%" ]] && perc_into_dec "$1" || dec_into_perc "$1"