From 0825f6113d094029bdfad36f400eca847206f3f0 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Tue, 20 Aug 2024 12:18:23 -0400 Subject: [PATCH] feat: export nil renderer --- nil_renderer.go | 38 ++++++++++++++++++++------------------ nil_renderer_test.go | 2 +- options.go | 4 ++-- options_test.go | 2 +- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/nil_renderer.go b/nil_renderer.go index 4f547aa152..45046b6ff4 100644 --- a/nil_renderer.go +++ b/nil_renderer.go @@ -2,23 +2,25 @@ package tea import "io" -type nilRenderer struct{} +// NilRenderer is a no-op renderer. It implements the Renderer interface but +// doesn't render anything to the terminal. +type NilRenderer struct{} -var _ Renderer = nilRenderer{} +var _ Renderer = NilRenderer{} -func (nilRenderer) SetOutput(io.Writer) {} -func (nilRenderer) Flush() error { return nil } -func (nilRenderer) Close() error { return nil } -func (nilRenderer) Write([]byte) (int, error) { return 0, nil } -func (nilRenderer) WriteString(string) (int, error) { return 0, nil } -func (nilRenderer) Repaint() {} -func (nilRenderer) ClearScreen() {} -func (nilRenderer) AltScreen() bool { return false } -func (nilRenderer) EnterAltScreen() {} -func (nilRenderer) ExitAltScreen() {} -func (nilRenderer) CursorVisibility() bool { return false } -func (nilRenderer) ShowCursor() {} -func (nilRenderer) HideCursor() {} -func (nilRenderer) Execute(string) {} -func (nilRenderer) InsertAbove(string) error { return nil } -func (nilRenderer) Resize(int, int) {} +func (NilRenderer) SetOutput(io.Writer) {} +func (NilRenderer) Flush() error { return nil } +func (NilRenderer) Close() error { return nil } +func (NilRenderer) Write([]byte) (int, error) { return 0, nil } +func (NilRenderer) WriteString(string) (int, error) { return 0, nil } +func (NilRenderer) Repaint() {} +func (NilRenderer) ClearScreen() {} +func (NilRenderer) AltScreen() bool { return false } +func (NilRenderer) EnterAltScreen() {} +func (NilRenderer) ExitAltScreen() {} +func (NilRenderer) CursorVisibility() bool { return false } +func (NilRenderer) ShowCursor() {} +func (NilRenderer) HideCursor() {} +func (NilRenderer) Execute(string) {} +func (NilRenderer) InsertAbove(string) error { return nil } +func (NilRenderer) Resize(int, int) {} diff --git a/nil_renderer_test.go b/nil_renderer_test.go index 7fb6c0642c..6d97a1e877 100644 --- a/nil_renderer_test.go +++ b/nil_renderer_test.go @@ -3,7 +3,7 @@ package tea import "testing" func TestNilRenderer(t *testing.T) { - r := nilRenderer{} + r := NilRenderer{} r.Repaint() r.EnterAltScreen() if r.AltScreen() { diff --git a/options.go b/options.go index 1c3b2305df..c0d054f30b 100644 --- a/options.go +++ b/options.go @@ -186,10 +186,10 @@ func WithRenderer(renderer Renderer) ProgramOption { // not a TTY. // // Deprecated: This option is deprecated and will be removed in a future -// version of this package. +// version of this package. Use [NilRenderer] with [WithRenderer] instead. func WithoutRenderer() ProgramOption { return func(p *Program) { - p.renderer = &nilRenderer{} + p.renderer = &NilRenderer{} } } diff --git a/options_test.go b/options_test.go index ce8d41795a..c022ae7a08 100644 --- a/options_test.go +++ b/options_test.go @@ -30,7 +30,7 @@ func TestOptions(t *testing.T) { t.Run("renderer", func(t *testing.T) { p := NewProgram(nil, WithoutRenderer()) switch p.renderer.(type) { - case *nilRenderer: + case *NilRenderer: return default: t.Errorf("expected renderer to be a nilRenderer, got %v", p.renderer)