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

Method Srender

bigtext_printer.go:74–127  ·  view source on GitHub ↗

Srender renders the BigText as a string.

()

Source from the content-addressed store, hash-verified

72
73// Srender renders the BigText as a string.
74func (p BigTextPrinter) Srender() (string, error) {
75 var ret strings.Builder
76
77 if RawOutput {
78 for _, letter := range p.Letters {
79 ret.WriteString(letter.String)
80 }
81 return ret.String(), nil
82 }
83
84 var bigLetters Letters
85 for _, l := range p.Letters {
86 if val, ok := p.BigCharacters[l.String]; ok {
87 bigLetters = append(bigLetters, Letter{
88 String: val,
89 Style: l.Style,
90 RGB: l.RGB,
91 })
92 }
93 }
94
95 var maxHeight int
96
97 for _, l := range bigLetters {
98 h := strings.Count(l.String, "\n")
99 if h > maxHeight {
100 maxHeight = h
101 }
102 }
103
104 for i := 0; i <= maxHeight; i++ {
105 for _, letter := range bigLetters {
106 var letterLine string
107 letterLines := strings.Split(letter.String, "\n")
108 maxLetterWidth := internal.GetStringMaxWidth(letter.String)
109 if len(letterLines) > i {
110 letterLine = letterLines[i]
111 }
112 letterLineLength := runewidth.StringWidth(letterLine)
113 if letterLineLength < maxLetterWidth {
114 letterLine += strings.Repeat(" ", maxLetterWidth-letterLineLength)
115 }
116
117 if letter.RGB != (RGB{}) && (color.IsSupportRGBColor() || internal.RunsInCi()) {
118 ret.WriteString(letter.RGB.Sprint(letterLine))
119 } else {
120 ret.WriteString(letter.Style.Sprint(letterLine))
121 }
122 }
123 ret.WriteByte('\n')
124 }
125
126 return ret.String(), nil
127}
128
129// Render prints the BigText to the terminal.
130func (p BigTextPrinter) Render() error {

Callers 1

RenderMethod · 0.95

Calls 4

GetStringMaxWidthFunction · 0.92
RunsInCiFunction · 0.92
SprintMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected