From c76036a6f2a067cc6fbdf9eb8a114f71500bbb3a Mon Sep 17 00:00:00 2001 From: Bradley Cicenas Date: Mon, 15 May 2017 10:37:27 +0000 Subject: [PATCH] allow multi-line metadata in expanded view --- cwidgets/expanded/info.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/cwidgets/expanded/info.go b/cwidgets/expanded/info.go index f798aac..909b512 100644 --- a/cwidgets/expanded/info.go +++ b/cwidgets/expanded/info.go @@ -1,6 +1,8 @@ package expanded import ( + "strings" + ui "github.com/gizak/termui" ) @@ -24,12 +26,33 @@ func NewInfo(id string) *Info { func (w *Info) Set(k, v string) { w.data[k] = v + // rebuild rows w.Rows = [][]string{} for _, k := range displayInfo { if v, ok := w.data[k]; ok { - w.Rows = append(w.Rows, []string{k, v}) + w.Rows = append(w.Rows, mkInfoRows(k, v)...) } } + w.Height = len(w.Rows) + 2 } + +// Build row(s) from a key and value string +func mkInfoRows(k, v string) (rows [][]string) { + lines := strings.Split(v, "\n") + + // initial row with field name + rows = append(rows, []string{k, lines[0]}) + + // append any additional lines in seperate row + if len(lines) > 1 { + for _, line := range lines[1:] { + if line != "" { + rows = append(rows, []string{"", line}) + } + } + } + + return rows +}