feat(display): add methods to `display`

- Add `indent`, `faint`, and `underline` methods to `display`
- Add tests for the above
This commit is contained in:
Chris Lane 2020-11-27 13:40:24 -05:00
parent 367673d5d9
commit aa16f68620
6 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,8 @@
package display
import "fmt"
// Faint returns an faint string
func Faint(str string) string {
return fmt.Sprintf(fmt.Sprintf("\033[2m%s\033[0m", str))
}

View File

@ -0,0 +1,14 @@
package display
import (
"testing"
)
// TestFaint asserts that Faint applies faint formatting
func TestFaint(t *testing.T) {
want := "\033[2mfoo\033[0m"
got := Faint("foo")
if want != got {
t.Errorf("failed to faint: want: %s, got: %s", want, got)
}
}

View File

@ -0,0 +1,16 @@
package display
import (
"fmt"
"strings"
)
// Indent prepends each line of a string with a tab
func Indent(str string) string {
out := ""
for _, line := range strings.Split(str, "\n") {
out += fmt.Sprintf("\t%s\n", line)
}
return strings.TrimSuffix(out, "\n")
}

View File

@ -0,0 +1,12 @@
package display
import "testing"
// TestIndent asserts that Indent prepends a tab to each line
func TestIndent(t *testing.T) {
got := Indent("foo\nbar\nbaz")
want := "\tfoo\n\tbar\n\tbaz"
if got != want {
t.Errorf("failed to indent: want: %s, got: %s", want, got)
}
}

View File

@ -0,0 +1,8 @@
package display
import "fmt"
// Underline returns an underlined string
func Underline(str string) string {
return fmt.Sprintf(fmt.Sprintf("\033[4m%s\033[0m", str))
}

View File

@ -0,0 +1,14 @@
package display
import (
"testing"
)
// TestUnderline asserts that Underline applies underline formatting
func TestUnderline(t *testing.T) {
want := "\033[4mfoo\033[0m"
got := Underline("foo")
if want != got {
t.Errorf("failed to underline: want: %s, got: %s", want, got)
}
}