package formatters
import (
"fmt"
"io"
"github.com/alecthomas/chroma/v2"
)
var TTY16m = Register ("terminal16m" , chroma .FormatterFunc (trueColourFormatter ))
func trueColourFormatter(w io .Writer , style *chroma .Style , it chroma .Iterator ) error {
style = clearBackground (style )
for token := it (); token != chroma .EOF ; token = it () {
entry := style .Get (token .Type )
if !entry .IsZero () {
out := ""
if entry .Bold == chroma .Yes {
out += "\033[1m"
}
if entry .Underline == chroma .Yes {
out += "\033[4m"
}
if entry .Italic == chroma .Yes {
out += "\033[3m"
}
if entry .Colour .IsSet () {
out += fmt .Sprintf ("\033[38;2;%d;%d;%dm" , entry .Colour .Red (), entry .Colour .Green (), entry .Colour .Blue ())
}
if entry .Background .IsSet () {
out += fmt .Sprintf ("\033[48;2;%d;%d;%dm" , entry .Background .Red (), entry .Background .Green (), entry .Background .Blue ())
}
fmt .Fprint (w , out )
}
fmt .Fprint (w , token .Value )
if !entry .IsZero () {
fmt .Fprint (w , "\033[0m" )
}
}
return nil
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .