Skip to content

Commit

Permalink
feat: export nil renderer
Browse files Browse the repository at this point in the history
  • Loading branch information
aymanbagabas committed Aug 20, 2024
1 parent 544a715 commit 0825f61
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 22 deletions.
38 changes: 20 additions & 18 deletions nil_renderer.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {}

Check failure on line 11 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.SetOutput should have comment or be unexported (revive)

Check failure on line 11 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.SetOutput should have comment or be unexported (revive)
func (NilRenderer) Flush() error { return nil }

Check failure on line 12 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.Flush should have comment or be unexported (revive)

Check failure on line 12 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.Flush should have comment or be unexported (revive)
func (NilRenderer) Close() error { return nil }

Check failure on line 13 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.Close should have comment or be unexported (revive)

Check failure on line 13 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.Close should have comment or be unexported (revive)
func (NilRenderer) Write([]byte) (int, error) { return 0, nil }
func (NilRenderer) WriteString(string) (int, error) { return 0, nil }

Check failure on line 15 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.WriteString should have comment or be unexported (revive)

Check failure on line 15 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.WriteString should have comment or be unexported (revive)
func (NilRenderer) Repaint() {}

Check failure on line 16 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.Repaint should have comment or be unexported (revive)

Check failure on line 16 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.Repaint should have comment or be unexported (revive)
func (NilRenderer) ClearScreen() {}

Check failure on line 17 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.ClearScreen should have comment or be unexported (revive)

Check failure on line 17 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.ClearScreen should have comment or be unexported (revive)
func (NilRenderer) AltScreen() bool { return false }

Check failure on line 18 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.AltScreen should have comment or be unexported (revive)

Check failure on line 18 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.AltScreen should have comment or be unexported (revive)
func (NilRenderer) EnterAltScreen() {}

Check failure on line 19 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.EnterAltScreen should have comment or be unexported (revive)

Check failure on line 19 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.EnterAltScreen should have comment or be unexported (revive)
func (NilRenderer) ExitAltScreen() {}

Check failure on line 20 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.ExitAltScreen should have comment or be unexported (revive)

Check failure on line 20 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.ExitAltScreen should have comment or be unexported (revive)
func (NilRenderer) CursorVisibility() bool { return false }

Check failure on line 21 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.CursorVisibility should have comment or be unexported (revive)

Check failure on line 21 in nil_renderer.go

View workflow job for this annotation

GitHub Actions / lint

exported: exported method NilRenderer.CursorVisibility should have comment or be unexported (revive)
func (NilRenderer) ShowCursor() {}
func (NilRenderer) HideCursor() {}
func (NilRenderer) Execute(string) {}
func (NilRenderer) InsertAbove(string) error { return nil }
func (NilRenderer) Resize(int, int) {}
2 changes: 1 addition & 1 deletion nil_renderer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package tea
import "testing"

func TestNilRenderer(t *testing.T) {
r := nilRenderer{}
r := NilRenderer{}
r.Repaint()
r.EnterAltScreen()
if r.AltScreen() {
Expand Down
4 changes: 2 additions & 2 deletions options.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{}
}
}

Expand Down
2 changes: 1 addition & 1 deletion options_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 0825f61

Please sign in to comment.