public function color($color = null, $style = null, $background = null) // {{{
    {
        $colors = $this->getColorCodes();
        if (is_array($color)) {
            $style      = isset($color['style']) ? $color['style'] : null;
            $background = isset($color['background']) ? $color['background'] : null;
            $color      = isset($color['color']) ? $color['color'] : null;
        }

        if ($color == 'reset') {
            return "\033[0m";
        }

        $code = array();
        if (isset($style)) {
            $code[] = $colors['style'][$style];
        }

        if (isset($color)) {
            $code[] = $colors['color'][$color];
        }

        if (isset($background)) {
            $code[] = $colors['background'][$background];
        }

        if (empty($code)) {
            $code[] = 0;
        }

        $code = implode(';', $code);
        return "\033[{$code}m";
    }