X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/5da3ea038d1e9f9a2634d5ab137aef6989a3a789..a345df4e4bbf9dbaf3da1ce548896eef8f515de3:/view.go diff --git a/view.go b/view.go index 8e71eec..a75b1d8 100644 --- a/view.go +++ b/view.go @@ -280,25 +280,25 @@ func (v *View) lineSize(line nodeKey) int { // Render returns the view as the model reads it: one line "id+n|text" for each // node inside tags, with the newlines of the text as spaces. func (v *View) Render() string { - return v.RenderWithout(nil) + return "\n" + strings.Join(v.LinesWithout(nil), "") + "" } -// RenderWithout returns the view as Render does, without the leaf lines of the -// messages in skip. A line that merges such a message with others stays. -func (v *View) RenderWithout(skip map[int]bool) string { - var text strings.Builder - text.WriteString("\n") +// LinesWithout returns the lines of the view as the model reads them, each with +// its newline, without the leaf lines of the messages in skip. A line that +// merges such a message with others stays. +func (v *View) LinesWithout(skip map[int]bool) []string { + lines := make([]string, 0, len(v.lines)) for _, line := range v.lines { if line.level == 0 && skip[line.index] { continue } + var text strings.Builder v.renderLine(&text, line) + lines = append(lines, text.String()) } - text.WriteString("") - - return text.String() + return lines } // renderLine writes one view line, "id+n|text", and a newline.