Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #### PRINTBOX ####
- # call as printbox "some;multi-line text;(blankline);you want;to print in a pretty box"
- printbox:
- var printboxText $0
- #how many lines?
- eval printboxTextLineCount countsplit("%printboxText", ";")
- #I'll need this later for training spaces
- var space @
- eval space replacere("%space", "@", " ")
- #Swap to an array
- eval printboxText replacere("%printboxText", ";", "|")
- #What's the longest single line?
- var c 0
- var printboxMaxLen %printboxText[%c]
- gosub stringLen printboxMaxLen
- findlongest:
- math c add 1
- if (%c >= %printboxTextLineCount) then {goto printboxPadding}
- var printboxCompare %printboxText[%c]
- gosub stringLen printboxCompare
- if (%printboxMaxLen < %printboxCompare) then {
- var printboxMaxLen %printboxCompare
- #make sure %stars is filled with longest string of stars
- var stars %printboxText[%c]
- eval stars replacere("%stars", ".", "*")
- }
- goto findlongest
- printboxPadding:
- #pad out 4 stars on each side, since I pad 2 stars, 2 spaces around to make the box
- var stars ****%stars****
- math printboxMaxLen add 8
- var c 0
- gosub makeSpace endecho%c %printboxText[%c]
- printboxPaddingLoop:
- math c add 1
- if (%c >= %printboxTextLineCount) then {goto printboxPrintFinal}
- echo
- gosub makeSpace endecho%c %printboxText[%c]
- goto printboxPaddingLoop
- printboxPrintFinal:
- var c 0
- echo %stars
- echo %endecho%c
- printboxPrintFinalLoop:
- math c add 1
- if (%c >= %printboxTextLineCount) then {
- echo %stars
- return
- }
- echo %endecho%c
- goto printboxPrintFinalLoop
- #### STRINGLEN ####
- # call as gosub stringLen NameOfVariable
- # return length of a string in NameOfVariable
- stringLen:
- var varName $1
- eval stringLentemp replacere("%%varName", ".", "*")
- eval stringLentemp countsplit("%stringLentemp", "*")
- var %varName %stringLentemp
- return
- ####
- #### Pad out an end echo with spaces ####
- # call as gosub makeSpace (variable, eg endecho3) "string"<sans quotes
- # returns a string with ** STRING (correct spacing) ** in the first bounded word
- #
- makeSpace:
- var varName $1
- var string $0
- var %varName %string
- #? is needed for blank lines
- eval string replacere ("%string", "%varName ?" "")
- var stringLen %string
- eval stringLen replacere("%stringLen", ".", "*")
- eval stringLen countsplit("%stringLen", "*")
- math stringLen subtract %printboxMaxLen
- #accounts for the 4 spaces on each side of padding (2 stars + 2 spaces)x2
- math stringLen add 8
- var %varName ** %string
- spaceLoop:
- math stringLen add 1
- if (%stringLen > 0) then {
- var %varName %%varName **
- return
- }
- var %varName %%varName%space
- goto spaceLoop
- ####
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement