func Apply(s string, ansi ...ANSI) string {
	if len(ansi) == 0 {
		return s
	}
	return concat(ansi).Apply(s)
}
Apply wraps given string in ANSIs.
package aec
import (
	"fmt"
	"strings"
)
const esc = "\x1b["
const Reset string = "\x1b[0m"
var empty = newAnsi("")
type ANSI interface {
	fmt.Stringer
	With(...ANSI) ANSI
	Apply(string) string
}
type ansiImpl string
func newAnsi(s string) *ansiImpl {
	r := ansiImpl(s)
	return &r
}
func (a *ansiImpl) With(ansi ...ANSI) ANSI {
	return concat(append([]ANSI{a}, ansi...))
}
func (a *ansiImpl) Apply(s string) string {
	return a.String() + s + Reset
}
func (a *ansiImpl) String() string {
	return string(*a)
}