Srender renders the Template as a string.
()
| 88 | |
| 89 | // Srender renders the Template as a string. |
| 90 | func (p PanelPrinter) Srender() (string, error) { |
| 91 | var ret strings.Builder |
| 92 | |
| 93 | if RawOutput { |
| 94 | return p.getRawOutput(), nil |
| 95 | } |
| 96 | |
| 97 | for i := range p.Panels { |
| 98 | for i2 := range p.Panels[i] { |
| 99 | p.Panels[i][i2].Data = strings.TrimSuffix(p.Panels[i][i2].Data, "\n") |
| 100 | } |
| 101 | } |
| 102 | |
| 103 | if p.BoxPrinter != (BoxPrinter{}) { |
| 104 | for i := range p.Panels { |
| 105 | for i2 := range p.Panels[i] { |
| 106 | p.Panels[i][i2].Data = p.BoxPrinter.Sprint(p.Panels[i][i2].Data) |
| 107 | } |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | for i := range p.Panels { |
| 112 | if len(p.Panels)-1 != i { |
| 113 | for i2 := range p.Panels[i] { |
| 114 | p.Panels[i][i2].Data += strings.Repeat("\n", p.BottomPadding) |
| 115 | } |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | columnMaxHeightMap := make(map[int]int) |
| 120 | |
| 121 | if p.SameColumnWidth { |
| 122 | for _, panel := range p.Panels { |
| 123 | for i, p2 := range panel { |
| 124 | if columnMaxHeightMap[i] < internal.GetStringMaxWidth(p2.Data) { |
| 125 | columnMaxHeightMap[i] = internal.GetStringMaxWidth(p2.Data) |
| 126 | } |
| 127 | } |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | for _, boxLine := range p.Panels { |
| 132 | var maxHeight int |
| 133 | |
| 134 | var renderedPanels []string |
| 135 | |
| 136 | for _, box := range boxLine { |
| 137 | renderedPanels = append(renderedPanels, box.Data) |
| 138 | } |
| 139 | |
| 140 | for i, panel := range renderedPanels { |
| 141 | renderedPanels[i] = strings.ReplaceAll(panel, "\n", Reset.Sprint()+"\n") |
| 142 | } |
| 143 | |
| 144 | for _, box := range renderedPanels { |
| 145 | height := len(strings.Split(box, "\n")) |
| 146 | if height > maxHeight { |
| 147 | maxHeight = height |
no test coverage detected