public static function color($string, $options = null)
    {
        if ($options === null) {
            return $string;
        }

        if (is_string($options)) {
            $options = explode(';', $options);
            if (strlen($options[0]) === 1) {
                $options = array_pad($options, 3, 'default');
                $options = array_combine(['style', 'color', 'background'], $options);
            } else {
                $options = ['color' => reset($options)];
            }
        }

        $options += [
            'style'      => 'default',
            'color'      => 'default',
            'background' => 'default'
        ];

        $format = "\e[";
        $format .= static::_vtstyle($options['style']) . ';';
        $format .= static::_vtcolor($options['color']) . ';';
        $format .= static::_vtbackground($options['background']) . 'm';

        return $format . $string . "\e[0m";
    }