// Render returns the view as the model reads it: one line "id+n|text" for each
// node inside <chat> tags, with the newlines of the text as spaces.
func (v *View) Render() string {
+ return v.RenderWithout(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("<chat>\n")
for _, line := range v.lines {
+ if line.level == 0 && skip[line.index] {
+ continue
+ }
+
v.renderLine(&text, line)
}