diff --git a/cmd/cheat/cmd_search.go b/cmd/cheat/cmd_search.go index 455772d..edc9b29 100644 --- a/cmd/cheat/cmd_search.go +++ b/cmd/cheat/cmd_search.go @@ -1,13 +1,11 @@ package main import ( - "bytes" "fmt" "os" "regexp" "strings" - "github.com/alecthomas/chroma/quick" "github.com/cheat/cheat/internal/config" "github.com/cheat/cheat/internal/sheet" "github.com/cheat/cheat/internal/sheets" @@ -85,23 +83,7 @@ func cmdSearch(opts map[string]interface{}, conf config.Config) { // if colorization was requested, apply it here if conf.Color(opts) { - - // if the syntax was not specified, default to bash - lex := sheet.Syntax - if lex == "" { - lex = "bash" - } - - var buf bytes.Buffer - err = quick.Highlight( - &buf, - sheet.Text, - lex, - conf.Formatter, - conf.Style, - ) - - sheet.Text = buf.String() + sheet.Colorize(conf) } // output the cheatsheet title diff --git a/cmd/cheat/cmd_view.go b/cmd/cheat/cmd_view.go index 09a41dc..0636dc7 100644 --- a/cmd/cheat/cmd_view.go +++ b/cmd/cheat/cmd_view.go @@ -5,8 +5,6 @@ import ( "os" "strings" - "github.com/alecthomas/chroma/quick" - "github.com/cheat/cheat/internal/config" "github.com/cheat/cheat/internal/sheets" ) @@ -43,29 +41,11 @@ func cmdView(opts map[string]interface{}, conf config.Config) { os.Exit(0) } - if !conf.Color(opts) { - fmt.Print(sheet.Text) - os.Exit(0) + // apply colorization if requested + if conf.Color(opts) { + sheet.Colorize(conf) } - // otherwise, colorize the output - // if the syntax was not specified, default to bash - lex := sheet.Syntax - if lex == "" { - lex = "bash" - } - - // apply syntax highlighting - err = quick.Highlight( - os.Stdout, - sheet.Text, - lex, - conf.Formatter, - conf.Style, - ) - - // if colorization somehow failed, output non-colorized text - if err != nil { - fmt.Print(sheet.Text) - } + // display the cheatsheet + fmt.Print(sheet.Text) } diff --git a/internal/sheet/colorize.go b/internal/sheet/colorize.go new file mode 100644 index 0000000..ddca56b --- /dev/null +++ b/internal/sheet/colorize.go @@ -0,0 +1,37 @@ +package sheet + +import ( + "bytes" + + "github.com/cheat/cheat/internal/config" + + "github.com/alecthomas/chroma/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() +}