From: Travis Swicegood Date: Tue, 14 Feb 2012 23:25:27 +0000 (-0600) Subject: Revert "Revert new color framework" X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=94a7b78a610ee0d7ec602f89dc21cbcf9774d668;p=common%2Fbash_it.git Revert "Revert new color framework" This reverts commit 39df027ed7f1b99cabf2e34115cf39b95706fb3e. --- diff --git a/themes/colors.theme.bash b/themes/colors.theme.bash index 0516e1c..9d756ee 100644 --- a/themes/colors.theme.bash +++ b/themes/colors.theme.bash @@ -1,89 +1,270 @@ #!/bin/bash -black="\[\e[0;30m\]" -red="\[\e[0;31m\]" -green="\[\e[0;32m\]" -yellow="\[\e[0;33m\]" -blue="\[\e[0;34m\]" -purple="\[\e[0;35m\]" -cyan="\[\e[0;36m\]" -white="\[\e[1;37m\]" -orange="\[\e[33;40m\]" - - -bold_black="\[\e[1;30m\]" -bold_red="\[\e[1;31m\]" -bold_green="\[\e[1;32m\]" -bold_yellow="\[\e[1;33m\]" -bold_blue="\[\e[1;34m\]" -bold_purple="\[\e[1;35m\]" -bold_cyan="\[\e[1;36m\]" -bold_white="\[\e[1;37m\]" -bold_orange="\[\e[1;33;40m\]" - -underline_black="\[\e[4;30m\]" -underline_red="\[\e[4;31m\]" -underline_green="\[\e[4;32m\]" -underline_yellow="\[\e[4;33m\]" -underline_blue="\[\e[4;34m\]" -underline_purple="\[\e[4;35m\]" -underline_cyan="\[\e[4;36m\]" -underline_white="\[\e[4;37m\]" -underline_orange="\[\e[4;33;40m\]" - -background_black="\[\e[40m\]" -background_red="\[\e[41m\]" -background_green="\[\e[42m\]" -background_yellow="\[\e[43m\]" -background_blue="\[\e[44m\]" -background_purple="\[\e[45m\]" -background_cyan="\[\e[46m\]" -background_white="\[\e[47m\]" - - -normal="\[\e[00m\]" -reset_color="\[\e[39m\]" +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 black)" +red="$(color red)" +green="$(color green)" +yellow="$(color yellow)" +blue="$(color blue)" +purple="$(color magenta)" +cyan="$(color cyan)" +white="$(color white bold)" +orange="$(color 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="\033[0;30m" -echo_red="\033[0;31m" -echo_green="\033[0;32m" -echo_yellow="\033[0;33m" -echo_blue="\033[0;34m" -echo_purple="\033[0;35m" -echo_cyan="\033[0;36m" -echo_white="\033[1;37m" -echo_orange="\033[33;40m" - - -echo_bold_black="\033[1;30m" -echo_bold_red="\033[1;31m" -echo_bold_green="\033[1;32m" -echo_bold_yellow="\033[1;33m" -echo_bold_blue="\033[1;34m" -echo_bold_purple="\033[1;35m" -echo_bold_cyan="\033[1;36m" -echo_bold_white="\033[1;37m" -echo_bold_orange="\033[1;33;40m" - -echo_underline_black="\033[4;30m" -echo_underline_red="\033[4;31m" -echo_underline_green="\033[4;32m" -echo_underline_yellow="\033[4;33m" -echo_underline_blue="\033[4;34m" -echo_underline_purple="\033[4;35m" -echo_underline_cyan="\033[4;36m" -echo_underline_white="\033[4;37m" -echo_underline_orange="\033[4;33;40m" - -echo_background_black="\033[40m" -echo_background_red="\033[41m" -echo_background_green="\033[42m" -echo_background_yellow="\033[43m" -echo_background_blue="\033[44m" -echo_background_purple="\033[45m" -echo_background_cyan="\033[46m" -echo_background_white="\033[47m" - -echo_normal="\033[00m" -echo_reset_color="\033[39m" +echo_black="$(echo_color black)" +echo_red="$(echo_color red)" +echo_green="$(echo_color green)" +echo_yellow="$(echo_color yellow)" +echo_blue="$(echo_color blue)" +echo_purple="$(echo_color magenta)" +echo_cyan="$(echo_color cyan)" +echo_white="$(echo_color white bold)" +echo_orange="$(echo_color 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)"