Advertisement
Hanryu

printbox

Jul 10th, 2020
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. #### PRINTBOX ####
  2. # call as printbox "some;multi-line text;(blankline);you want;to print in a pretty box"
  3. printbox:
  4. var printboxText $0
  5. #how many lines?
  6. eval printboxTextLineCount countsplit("%printboxText", ";")
  7. #I'll need this later for training spaces
  8. var space @
  9. eval space replacere("%space", "@", " ")
  10. #Swap to an array
  11. eval printboxText replacere("%printboxText", ";", "|")
  12. #What's the longest single line?
  13. var c 0
  14. var printboxMaxLen %printboxText[%c]
  15. gosub stringLen printboxMaxLen
  16. findlongest:
  17. math c add 1
  18. if (%c >= %printboxTextLineCount) then {goto printboxPadding}
  19. var printboxCompare %printboxText[%c]
  20. gosub stringLen printboxCompare
  21. if (%printboxMaxLen < %printboxCompare) then {
  22. var printboxMaxLen %printboxCompare
  23. #make sure %stars is filled with longest string of stars
  24. var stars %printboxText[%c]
  25. eval stars replacere("%stars", ".", "*")
  26. }
  27. goto findlongest
  28. printboxPadding:
  29. #pad out 4 stars on each side, since I pad 2 stars, 2 spaces around to make the box
  30. var stars ****%stars****
  31. math printboxMaxLen add 8
  32. var c 0
  33. gosub makeSpace endecho%c %printboxText[%c]
  34. printboxPaddingLoop:
  35. math c add 1
  36. if (%c >= %printboxTextLineCount) then {goto printboxPrintFinal}
  37. echo
  38. gosub makeSpace endecho%c %printboxText[%c]
  39. goto printboxPaddingLoop
  40. printboxPrintFinal:
  41. var c 0
  42. echo %stars
  43. echo %endecho%c
  44. printboxPrintFinalLoop:
  45. math c add 1
  46. if (%c >= %printboxTextLineCount) then {
  47. echo %stars
  48. return
  49. }
  50. echo %endecho%c
  51. goto printboxPrintFinalLoop
  52.  
  53. #### STRINGLEN ####
  54. # call as gosub stringLen NameOfVariable
  55. # return length of a string in NameOfVariable
  56. stringLen:
  57. var varName $1
  58. eval stringLentemp replacere("%%varName", ".", "*")
  59. eval stringLentemp countsplit("%stringLentemp", "*")
  60. var %varName %stringLentemp
  61. return
  62. ####
  63.  
  64. #### Pad out an end echo with spaces ####
  65. # call as gosub makeSpace (variable, eg endecho3) "string"<sans quotes
  66. # returns a string with ** STRING (correct spacing) ** in the first bounded word
  67. #
  68. makeSpace:
  69. var varName $1
  70. var string $0
  71. var %varName %string
  72. #? is needed for blank lines
  73. eval string replacere ("%string", "%varName ?" "")
  74. var stringLen %string
  75. eval stringLen replacere("%stringLen", ".", "*")
  76. eval stringLen countsplit("%stringLen", "*")
  77. math stringLen subtract %printboxMaxLen
  78. #accounts for the 4 spaces on each side of padding (2 stars + 2 spaces)x2
  79. math stringLen add 8
  80. var %varName ** %string
  81. spaceLoop:
  82. math stringLen add 1
  83. if (%stringLen > 0) then {
  84. var %varName %%varName **
  85. return
  86. }
  87. var %varName %%varName%space
  88. goto spaceLoop
  89. ####
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement