| #!/usr/bin/env bash |
| |
| function __ { |
| echo "$@" |
| } |
| |
| function __make_ansi { |
| next=$1 && shift |
| echo "\[\e[$(__$next $@)m\]" |
| } |
| |
| function __make_echo { |
| next=$1 && shift |
| echo "\033[$(__$next $@)m" |
| } |
| |
| |
| function __reset { |
| next=$1 && shift |
| out="$(__$next $@)" |
| echo "0${out:+;${out}}" |
| } |
| |
| function __bold { |
| next=$1 && shift |
| out="$(__$next $@)" |
| echo "${out:+${out};}1" |
| } |
| |
| function __faint { |
| next=$1 && shift |
| out="$(__$next $@)" |
| echo "${out:+${out};}2" |
| } |
| |
| function __italic { |
| next=$1 && shift |
| out="$(__$next $@)" |
| echo "${out:+${out};}3" |
| } |
| |
| function __underline { |
| next=$1 && shift |
| out="$(__$next $@)" |
| echo "${out:+${out};}4" |
| } |
| |
| function __negative { |
| next=$1 && shift |
| out="$(__$next $@)" |
| echo "${out:+${out};}7" |
| } |
| |
| function __crossed { |
| next=$1 && shift |
| out="$(__$next $@)" |
| echo "${out:+${out};}8" |
| } |
| |
| |
| function __color_normal_fg { |
| echo "3$1" |
| } |
| |
| function __color_normal_bg { |
| echo "4$1" |
| } |
| |
| function __color_bright_fg { |
| echo "9$1" |
| } |
| |
| function __color_bright_bg { |
| echo "10$1" |
| } |
| |
| |
| function __color_black { |
| echo "0" |
| } |
| |
| function __color_red { |
| echo "1" |
| } |
| |
| function __color_green { |
| echo "2" |
| } |
| |
| function __color_yellow { |
| echo "3" |
| } |
| |
| function __color_blue { |
| echo "4" |
| } |
| |
| function __color_magenta { |
| echo "5" |
| } |
| |
| function __color_cyan { |
| echo "6" |
| } |
| |
| function __color_white { |
| echo "7" |
| } |
| |
| function __color_rgb { |
| r=$1 && g=$2 && b=$3 |
| [[ r == g && g == b ]] && echo $(( $r / 11 + 232 )) && return # gray range above 232 |
| echo "8;5;$(( ($r * 36 + $b * 6 + $g) / 51 + 16 ))" |
| } |
| |
| function __color { |
| color=$1 && shift |
| case "$1" in |
| fg|bg) side="$1" && shift ;; |
| *) side=fg;; |
| esac |
| case "$1" in |
| normal|bright) mode="$1" && shift;; |
| *) mode=normal;; |
| esac |
| [[ $color == "rgb" ]] && rgb="$1 $2 $3" && shift 3 |
| |
| next=$1 && shift |
| out="$(__$next $@)" |
| echo "$(__color_${mode}_${side} $(__color_${color} $rgb))${out:+;${out}}" |
| } |
| |
| |
| function __black { |
| echo "$(__color black $@)" |
| } |
| |
| function __red { |
| echo "$(__color red $@)" |
| } |
| |
| function __green { |
| echo "$(__color green $@)" |
| } |
| |
| function __yellow { |
| echo "$(__color yellow $@)" |
| } |
| |
| function __blue { |
| echo "$(__color blue $@)" |
| } |
| |
| function __magenta { |
| echo "$(__color magenta $@)" |
| } |
| |
| function __cyan { |
| echo "$(__color cyan $@)" |
| } |
| |
| function __white { |
| echo "$(__color white $@)" |
| } |
| |
| function __rgb { |
| echo "$(__color rgb $@)" |
| } |
| |
| |
| function __color_parse { |
| next=$1 && shift |
| echo "$(__$next $@)" |
| } |
| |
| function color { |
| echo "$(__color_parse make_ansi $@)" |
| } |
| |
| function echo_color { |
| echo "$(__color_parse make_echo $@)" |
| } |
| |
| |
| black="$(color reset black)" |
| red="$(color reset red)" |
| green="$(color reset green)" |
| yellow="$(color reset yellow)" |
| blue="$(color reset blue)" |
| purple="$(color reset magenta)" |
| cyan="$(color reset cyan)" |
| white="$(color reset white bold)" |
| orange="$(color reset red fg bright)" |
| |
| bold_black="$(color black bold)" |
| bold_red="$(color red bold)" |
| bold_green="$(color green bold)" |
| bold_yellow="$(color yellow bold)" |
| bold_blue="$(color blue bold)" |
| bold_purple="$(color magenta bold)" |
| bold_cyan="$(color cyan bold)" |
| bold_white="$(color white bold)" |
| bold_orange="$(color red fg bright bold)" |
| |
| underline_black="$(color black underline)" |
| underline_red="$(color red underline)" |
| underline_green="$(color green underline)" |
| underline_yellow="$(color yellow underline)" |
| underline_blue="$(color blue underline)" |
| underline_purple="$(color magenta underline)" |
| underline_cyan="$(color cyan underline)" |
| underline_white="$(color white underline)" |
| underline_orange="$(color red fg bright underline)" |
| |
| background_black="$(color black bg)" |
| background_red="$(color red bg)" |
| background_green="$(color green bg)" |
| background_yellow="$(color yellow bg)" |
| background_blue="$(color blue bg)" |
| background_purple="$(color magenta bg)" |
| background_cyan="$(color cyan bg)" |
| background_white="$(color white bg bold)" |
| background_orange="$(color red bg bright)" |
| |
| normal="$(color reset)" |
| reset_color="$(__make_ansi '' 39)" |
| |
| # These colors are meant to be used with `echo -e` |
| echo_black="$(echo_color reset black)" |
| echo_red="$(echo_color reset red)" |
| echo_green="$(echo_color reset green)" |
| echo_yellow="$(echo_color reset yellow)" |
| echo_blue="$(echo_color reset blue)" |
| echo_purple="$(echo_color reset magenta)" |
| echo_cyan="$(echo_color reset cyan)" |
| echo_white="$(echo_color reset white bold)" |
| echo_orange="$(echo_color reset red fg bright)" |
| |
| echo_bold_black="$(echo_color black bold)" |
| echo_bold_red="$(echo_color red bold)" |
| echo_bold_green="$(echo_color green bold)" |
| echo_bold_yellow="$(echo_color yellow bold)" |
| echo_bold_blue="$(echo_color blue bold)" |
| echo_bold_purple="$(echo_color magenta bold)" |
| echo_bold_cyan="$(echo_color cyan bold)" |
| echo_bold_white="$(echo_color white bold)" |
| echo_bold_orange="$(echo_color red fg bright bold)" |
| |
| echo_underline_black="$(echo_color black underline)" |
| echo_underline_red="$(echo_color red underline)" |
| echo_underline_green="$(echo_color green underline)" |
| echo_underline_yellow="$(echo_color yellow underline)" |
| echo_underline_blue="$(echo_color blue underline)" |
| echo_underline_purple="$(echo_color magenta underline)" |
| echo_underline_cyan="$(echo_color cyan underline)" |
| echo_underline_white="$(echo_color white underline)" |
| echo_underline_orange="$(echo_color red fg bright underline)" |
| |
| echo_background_black="$(echo_color black bg)" |
| echo_background_red="$(echo_color red bg)" |
| echo_background_green="$(echo_color green bg)" |
| echo_background_yellow="$(echo_color yellow bg)" |
| echo_background_blue="$(echo_color blue bg)" |
| echo_background_purple="$(echo_color magenta bg)" |
| echo_background_cyan="$(echo_color cyan bg)" |
| echo_background_white="$(echo_color white bg bold)" |
| echo_background_orange="$(echo_color red bg bright)" |
| |
| echo_normal="$(echo_color reset)" |
| echo_reset_color="$(__make_echo '' 39)" |