bash-it/plugins/available/colors.plugin.bash

198 lines
2.6 KiB
Bash

# shellcheck shell=bash
# shellcheck disable=SC2005
function __() {
echo "$@"
}
function __make_ansi() {
next=$1
shift
echo -e "\[\e[$("__$next" "$@")m\]"
}
function __make_echo() {
next=$1
shift
echo -e "\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 "$@")"
}