package sheet

import (
	"bytes"

	"github.com/cheat/cheat/internal/config"

	"github.com/alecthomas/chroma/v2/quick"
)

// Colorize applies syntax-highlighting to a cheatsheet's Text.
func (s *Sheet) Colorize(conf config.Config) {

	// if the syntax was not specified, default to bash
	lex := s.Syntax
	if lex == "" {
		lex = "bash"
	}

	// write colorized text into a buffer
	var buf bytes.Buffer
	err := quick.Highlight(
		&buf,
		s.Text,
		lex,
		conf.Formatter,
		conf.Style,
	)

	// if colorization somehow failed, do nothing
	if err != nil {
		return
	}

	// otherwise, swap the cheatsheet's Text with its colorized equivalent
	s.Text = buf.String()
}