#!/bin/zsh
#
# Provides for easier use of 256 colors and effects.
#

# Return if requirements are not found.
if [[ ${TERM} == 'dumb' ]]; then
  return 1
elif
  [[ -n ${FX} ]]; then
  # FX is set or sourced by another module
  return 1
fi

typeset -gA FX FG BG

FX=(
                                        reset                        "\e[00m"
                                        normal                       "\e[22m"
  bold                      "\e[01m"    no-bold                      "\e[22m"
  italic                    "\e[03m"    no-italic                    "\e[23m"
  underline                 "\e[04m"    no-underline                 "\e[24m"
  blink                     "\e[05m"    no-blink                     "\e[25m"
  reverse                   "\e[07m"    no-reverse                   "\e[27m"
)

FG[none]="${FX[none]}"
BG[none]="${FX[none]}"
colors=(black red green yellow blue magenta cyan white)
for color in {0..255}; do
  if (( ${color} >= 0 )) && (( ${color} < ${#colors} )); then
    index=$(( ${color} + 1 ))
    FG[${colors[${index}]}]="\e[38;5;${color}m"
    BG[${colors[${index}]}]="\e[48;5;${color}m"
  fi

  FG[${color}]="\e[38;5;${color}m"
  BG[${color}]="\e[48;5;${color}m"
done
unset color{s,} index
