Padding & Indentation

import { padLeft, padRight, padCenter, indent, dedent } from '@ppabari/strio/str';

padLeft / padRight

padLeft(str: string, length: number, char?: string): string
padRight(str: string, length: number, char?: string): string

Pad to length with char (default ' '). Multi-character pad units are supported (truncated to fit). Returns the string unchanged if already long enough.

padLeft('7', 3, '0');  // โ†’ '007'
padRight('7', 3, '0'); // โ†’ '700'
padLeft('hi', 5);      // โ†’ '   hi'
padLeft('x', 5, 'ab'); // โ†’ 'ababx'

padCenter

padCenter(str: string, length: number, char?: string): string

Center within length. When padding is uneven, the extra character goes on the right.

padCenter('hi', 6);      // โ†’ '  hi  '
padCenter('hi', 7, '*'); // โ†’ '**hi***'

indent

indent(str: string, count?: number, char?: string, indentEmpty?: boolean): string

Indent every line by count repetitions of char (default: 2 spaces). Blank lines are left untouched unless indentEmpty is true.

indent('a\nb');          // โ†’ '  a\n  b'
indent('a\nb', 1, '\t'); // โ†’ '\ta\n\tb'

dedent

dedent(str: string): string

Remove the common leading whitespace from every line โ€” handy for template literals. Fully-blank lines are ignored when computing the common indent; leading/trailing blank lines are trimmed.

dedent('    a\n    b');       // โ†’ 'a\nb'
dedent('\n  foo\n    bar\n'); // โ†’ 'foo\n  bar'