1.0.0 • Published 8 years ago

utils-pad-string v1.0.0

Weekly downloads
54
License
MIT
Repository
github
Last release
8 years ago

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.

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

    	``` javascript
    	// 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.