Difference between revisions of "WrapText"
Jump to navigation
Jump to search
Ugleh Ulrik (talk | contribs) |
m (<lsl> tag to <source>) |
||
Line 11: | Line 11: | ||
== Specification == | == Specification == | ||
<div style="padding: 0.5em;"> | <div style="padding: 0.5em;"> | ||
< | <source lang="lsl2">string WrapText(string pcText, integer piWidth) { | ||
list laLines = []; | list laLines = []; | ||
integer liIndex; | integer liIndex; | ||
Line 33: | Line 33: | ||
} | } | ||
return llDumpList2String(laLines,"\n"); | return llDumpList2String(laLines,"\n"); | ||
}</ | }</source> | ||
</div></div> | </div></div> | ||
{{LSLC|Examples|WrapText|}} | {{LSLC|Examples|WrapText|}} | ||
{{LSLC|User-Defined Functions}} | {{LSLC|User-Defined Functions}} |
Latest revision as of 14:49, 22 January 2015
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Function: string WrapText(string source, integer length);
Splits a long text string into lines whose character length you get to specify. Useful, for instance, for long floating text to make it tidier. It will not split words at odd places but instead look for the space in the text nearest to the length you have specified.
Example: string myWrappedText = WrapText(Title, 25);
Specification
string WrapText(string pcText, integer piWidth) {
list laLines = [];
integer liIndex;
integer liKeep; // Specifies if we keep the char pointed at or not
integer liLen = llStringLength(pcText);
list llSearch = [" ", "\n"];
while (liLen > 0) {
liIndex = piWidth;
if (!(liKeep = (liLen <= piWidth))) {
while ((liIndex >= 0) && (-1 == llListFindList(llSearch, (list)llGetSubString(pcText, liIndex, liIndex))))
--liIndex;
if (liIndex <= 0) {
liIndex = piWidth;
liKeep = 1;
}
}
laLines += llGetSubString(pcText, 0, liIndex - 1);
pcText = llDeleteSubString(pcText, 0, liIndex - liKeep);
liLen -= (1 + liIndex - liKeep);
}
return llDumpList2String(laLines,"\n");
}