This module provides functions to align texts. The procedures consider multibyte strings (ex: あいうえお, 漢字).
Basic usage
Show example that aligns text that has half width string and full width string.
Example:
import alignment let s = @["abcde", "あいうえお", "ABC", "あ", "123456789"] let aligned = s.alignCenter doAssert aligned[0] == " abcde " doAssert aligned[1] == "あいうえお" doAssert aligned[2] == " ABC " doAssert aligned[3] == " あ " doAssert aligned[4] == "123456789 " for line in aligned: echo "| ", line, " |" ## Output: ## | abcde | ## | あいうえお | ## | ABC | ## | あ | ## | 123456789 |
Procs
proc alignLeft(lines: openArray[string]; pad = " "; halfPad = " "; width = -1; additionalPadWidth = 0): seq[string] {...}{.raises: [], tags: [].}
-
Aligns strings with padding, so that it is of max look length of strings. Padding string are added before resulting in left alignment.
Example:
let aligned = @["abcde", "あいうえお"].alignLeft doAssert aligned[0] == "abcde " doAssert aligned[1] == "あいうえお" let aligned2 = @["abcde", "あいうえお"].alignLeft(pad = "ん", halfPad = "X") doAssert aligned2[0] == "abcdeXんん" doAssert aligned2[1] == "あいうえお" let aligned3 = @["abcde", "あいうえお"].alignLeft(width = 14) doAssert aligned3[0] == "abcde " doAssert aligned3[1] == "あいうえお " let aligned4 = @["abcde", "あいうえお"].alignLeft( additionalPadWidth = 10) doAssert aligned4[0] == "abcde " doAssert aligned4[1] == "あいうえお "
proc alignCenter(lines: openArray[string]; pad = " "; halfPad = " "; width = -1; additionalPadWidth = 0): seq[string] {...}{.raises: [], tags: [].}
-
Aligns strings with padding, so that it is of max look length of strings. Padding string are added before and after resulting in center alignment.
Example:
let aligned = @["abcde", "あいうえお"].alignCenter doAssert aligned[0] == " abcde " doAssert aligned[1] == "あいうえお" let aligned2 = @["abcde", "あいうえお"].alignCenter(pad = "ん", halfPad = "X") doAssert aligned2[0] == "んabcdeXん" doAssert aligned2[1] == "あいうえお" let aligned3 = @["abcde", "あいうえお"].alignCenter(width = 14) doAssert aligned3[0] == " abcde " doAssert aligned3[1] == " あいうえお " let aligned4 = @["abcde", "あいうえお"].alignCenter( additionalPadWidth = 10) doAssert aligned4[0] == " abcde " doAssert aligned4[1] == " あいうえお "
proc alignRight(lines: openArray[string]; pad = " "; halfPad = " "; width = -1; additionalPadWidth = 0): seq[string] {...}{.raises: [], tags: [].}
-
Aligns strings with padding, so that it is of max look length of strings. Padding string are added after resulting in right alignment.
Example:
let aligned = @["abcde", "あいうえお"].alignRight doAssert aligned[0] == " abcde" doAssert aligned[1] == "あいうえお" let aligned2 = @["abcde", "あいうえお"].alignRight(pad = "ん", halfPad = "X") doAssert aligned2[0] == "んんXabcde" doAssert aligned2[1] == "あいうえお" let aligned3 = @["abcde", "あいうえお"].alignRight(width = 14) doAssert aligned3[0] == " abcde" doAssert aligned3[1] == " あいうえお" let aligned4 = @["abcde", "あいうえお"].alignRight( additionalPadWidth = 10) doAssert aligned4[0] == " abcde" doAssert aligned4[1] == " あいうえお"