MCPcopy
hub / github.com/pterm/pterm / Srender

Method Srender

panel_printer.go:90–182  ·  view source on GitHub ↗

Srender renders the Template as a string.

()

Source from the content-addressed store, hash-verified

88
89// Srender renders the Template as a string.
90func (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

Callers 1

RenderMethod · 0.95

Calls 5

getRawOutputMethod · 0.95
GetStringMaxWidthFunction · 0.92
RemoveColorFromStringFunction · 0.85
SprintMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected