X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/1e0b100b2d3d4af9f65daae7ede647ac9c388157..4c0da6d82252e096269ff840160618318a457d53:/view.go?ds=sidebyside diff --git a/view.go b/view.go index 70182d0..a75b1d8 100644 --- a/view.go +++ b/view.go @@ -280,15 +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 { - var text strings.Builder - text.WriteString("\n") + return "\n" + strings.Join(v.LinesWithout(nil), "") + "" +} + +// 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.