From ecdae14a4a36c9144101192aa2c2bbfa3aad1a52 Mon Sep 17 00:00:00 2001 From: Elliot Waddington Date: Tue, 16 Apr 2024 15:49:42 +0200 Subject: [PATCH] embed theme as bytes to use with WithStylesFromJSONBytes --- cmd/theme.go | 11 ++++++----- cmd/theme_test.go | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/cmd/theme.go b/cmd/theme.go index 0ff2d912..4928d571 100644 --- a/cmd/theme.go +++ b/cmd/theme.go @@ -121,19 +121,20 @@ var deletedLineStyle = lipgloss.NewStyle().Background(lipgloss.Color(ColorPalett var containerStyle = lipgloss.NewStyle().PaddingLeft(2).PaddingTop(2) //go:embed overmind-theme.json -var overmindTheme string +var overmindTheme []byte //go:embed overmind-theme-dark.json -var overmindThemeDark string +var overmindThemeDark []byte func markdownToString(markdown string) string { - themePath := overmindTheme + themeToUse := overmindTheme hasDarkBackground := termenv.HasDarkBackground() if hasDarkBackground { - themePath = overmindThemeDark + themeToUse = overmindThemeDark } + r, err := glamour.NewTermRenderer( - glamour.WithStylesFromJSONFile(themePath), + glamour.WithStylesFromJSONBytes(themeToUse), ) if err != nil { panic(fmt.Errorf("failed to initialize terminal renderer: %w", err)) diff --git a/cmd/theme_test.go b/cmd/theme_test.go index ab5cd5e9..51b55583 100644 --- a/cmd/theme_test.go +++ b/cmd/theme_test.go @@ -5,9 +5,9 @@ import ( ) func TestMarkdownToString(t *testing.T) { - // TODO: change this test data to use something that actually gets rendered to ANSI sequences and capture the correct output. - markdown := "This is a test markdown" - expectedOutput := "This is a test markdown" + markdown := `# some random markdown` + expectedOutput := "\n\x1b[38;2;255;255;255;48;2;121;112;235;1m\x1b[0m\x1b[38;2;255;255;255;48;2;121;112;235;1m\x1b[0m \x1b[38;2;255;255;255;48;2;121;112;235;1m \x1b[0m\x1b[38;2;255;255;255;48;2;121;112;235;1msome random\x1b[0m\x1b[38;2;255;255;255;48;2;121;112;235;1m markdown\x1b[0m\x1b[38;2;255;255;255;48;2;121;112;235;1m \x1b[0m\x1b[38;2;186;186;186m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[38;2;186;186;186m \x1b[0m\x1b[0m\n\x1b[0m\n" + got := markdownToString(markdown) if got != expectedOutput { t.Errorf("Expected %q, but got %q", expectedOutput, got)