MCPcopy Index your code
hub / github.com/banga/git-split-diffs / wrapSpannedStringByWord

Function wrapSpannedStringByWord

src/wrapSpannedStringByWord.ts:87–109  ·  view source on GitHub ↗
(
    spannedString: SpannedString<T>,
    width: number
)

Source from the content-addressed store, hash-verified

85}
86
87export function* wrapSpannedStringByWord<T>(
88 spannedString: SpannedString<T>,
89 width: number
90): Iterable<SpannedString<T>> {
91 // Short circuit if no wrapping is required
92 const string = spannedString.getString();
93 const charWidths = spannedString.getCharWidths();
94 const stringWidth = charWidths.reduce((a, b) => a + b, 0);
95 if (stringWidth < width) {
96 yield spannedString;
97 return;
98 }
99
100 const lineBreaks = getLineBreaksForString(string, charWidths, width);
101 let prevLineBreak = 0;
102 for (const lineBreak of lineBreaks) {
103 yield spannedString.slice(prevLineBreak, lineBreak);
104 prevLineBreak = lineBreak;
105 }
106 if (prevLineBreak < stringWidth - 1) {
107 yield spannedString.slice(prevLineBreak);
108 }
109}

Callers 3

iterFitTextToWidthFunction · 0.90
benchmark.tsFile · 0.90
wrapStringFunction · 0.90

Calls 4

getLineBreaksForStringFunction · 0.85
getStringMethod · 0.80
getCharWidthsMethod · 0.80
sliceMethod · 0.80

Tested by 1

wrapStringFunction · 0.72