utils-pad-string

1.0.0 • Public • Published

Pad

NPM version Build Status Coverage Status Dependencies

Pad a string.

Installation

$ npm install utils-pad-string

Usage

var pad = require( 'utils-pad-string' );

pad( str, len[, opts] )

Pads a string such that the padded string has a length of len.

var str = pad( 'a', 5 );
// returns 'a    '

The function accepts the following options:

  • lpad: string used to left pad. Default: ''.
  • rpad: string used to right pad. Default: ' '.
  • centerRight: boolean indicating whether to center right in the event of a tie. Default: false (i.e., center left).

By default, an input string is padded with spaces. To pad with a different character or sequence of characters, provide a pad string.

var str = pad( 'a', 10, {
    'lpad': 'b' 
});
// returns 'bbbbbbbbba'
 
str = pad( 'a', 12, {
    'rpad': 'b'
});
// returns 'abbbbbbbbbbb'

To center an input string, provide both lpad and rpad options.

var opts = {
    'lpad': 'a',
    'rpad': 'c'
};
 
var str = pad( 'b', 11, opts );
// returns 'aaaaabccccc'

When both lpad and rpad are specified and len-str.length is odd, left and right padding cannot equally split the available padding space. By default, right padding receives the extra character (i.e., the input string is centered left).

str = pad( 'b', 10, opts );
// returns 'aaaabccccc'

To center right, set the centerRight option.

opts.centerRight = true;
 
str = pad( 'b', 10, opts );
// returns 'aaaaabcccc'

Notes

  • In contrast to utils-left-pad-string and utils-right-pad-string, any padding which does not evenly divide available space is trimmed such that the returned string length is always len.

    var opts = {
        'lpad': 'boop',
        'rpad': 'woot'
    };
    var str = pad( 'beep', 10, opts );
    // returns 'boobeepwoo'
  • Similarly, if len < str.length, the input string is trimmed.

    // Pad right, trim right:
    var str = pad( 'beep', 2 );
    // returns 'be'
     
    // Pad left, trim left:
    str = pad( 'beep', 2, {
        'lpad': 'b'
    });
    // returns 'ep'
     
    // Pad both, trim both:
    str = pad( 'beep', 2, {
        'lpad': '@',
        'rpad': '!'
    });
    // returns 'ee'
     
    // Pad both, trim both starting from left:
    str = pad( 'abcdef', 3, {
        'lpad': '@',
        'rpad': '!'
    });
    // returns 'cde'
     
    // Pad both, trim both starting from right:
    str = pad( 'abcdef', 3, {
        'lpad': '@',
        'rpad': '!',
        'centerRight': true
    });
    // returns 'bcd'

Examples

var round = require( 'math-round' );
var pad = require( 'utils-pad-string' );
 
var str = 'boop';
var out;
var len;
var i;
 
for ( i = 0; i < 100; i++ ) {
    len = round( Math.random()*10 ) + str.length;
    out = pad( str, len, {
        'pad': 'beep',
        'rpad': 'p'
    });
    console.log( '%s. %d. %d.', out, len, out.length );
}

To run the example code from the top-level application directory,

$ node ./examples/index.js

CLI

Installation

To use the module as a general utility, install the module globally

$ npm install -g utils-pad-string

Usage

Usage: padstr [options] str --len length
 
Options:
 
  -h,    --help                Print this message.
  -V,    --version             Print the package version.
         --len length          String length.
         --lpad str            String used to left pad. Default: ''.
         --rpad str            String used to right pad. Default: ' '.
         --cright              Center right in the event of a tie.

Examples

$ padstr beep --len 10 --lpad b --rpad p
# => bbbbeepppp

Tests

Unit

This repository uses tape for unit tests. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ make view-cov

Browser Support

This repository uses Testling for browser testing. To run the tests in a (headless) local web browser, execute the following command in the top-level application directory:

$ make test-browsers

To view the tests in a local web browser,

$ make view-browser-tests

License

MIT license.

Copyright

Copyright © 2016. Athan Reines.

Package Sidebar

Install

npm i utils-pad-string

Weekly Downloads

8

Version

1.0.0

License

MIT

Last publish

Collaborators

  • kgryte