func (stt StyledText) Markups() map[rune]gruid.Style {
	markups := make(map[rune]gruid.Style, len(stt.markups))
	for k, v := range stt.markups {
		markups[k] = v
	}
	return markups
}
Markups returns a copy of the markups currently defined for the styled text.
package ui
import (
	"bytes"
	"fmt"
	"strings"
	"github.com/anaseto/gruid"
)
type StyledText struct {
	markups map[rune]gruid.Style
	text    string
	style   gruid.Style
}
func Text(text string) StyledText {
	return StyledText{text: text}
}
func Textf(format string, a ...interface{}) StyledText {
	return StyledText{text: fmt.Sprintf(format, a...)}
}
func NewStyledText(text string, st gruid.Style) StyledText {
	return StyledText{text: text, style: st}
}
func (stt StyledText) Text() string {
	return stt.text
}
func (stt StyledText) WithText(text string) StyledText {
	stt.text = text
	return stt
}
func (stt StyledText) WithTextf(format string, a ...interface{}) StyledText {
	stt.text = fmt.Sprintf(format, a...)
	return stt
}
func (stt StyledText) Style() gruid.Style {
	return stt.style
}
func (stt StyledText) WithStyle(style gruid.Style) StyledText {
	stt.style = style
	return stt
}
func (stt StyledText) With(text string, style gruid.Style) StyledText {
	stt.text = text
	stt.style = style
	return stt
}
func (stt StyledText) WithMarkup(r rune, style gruid.Style) StyledText {
	if r == ' ' || r == '\n' {
		return stt
	}
	if len(stt.markups) == 0 {
		stt.markups = map[rune]gruid.Style{}
	} else {
		omarks := stt.markups
		stt.markups = make(map[rune]gruid.Style, len(omarks))
		for k, v := range omarks {
			stt.markups[k] = v
		}
	}
	if r == 'N' {
		stt.style = style
		return stt
	}
	stt.markups[r] = style
	return stt
}
func (stt StyledText) WithMarkups(markups map[rune]gruid.Style) StyledText {
	stt.markups = markups
	return stt
}